Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort

Download:
- ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel

Java ist auch eine Insel
7., aktualisierte Auflage
geb., mit DVD (November 2007)
1.492 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1146-8
Pfeil 9 Die Funktionsbibliothek
Pfeil 9.1 Die Java-Klassenphilosophie
Pfeil 9.1.1 Übersicht über die Pakete der Standardbibliothek
Pfeil 9.2 Object ist die Mutter aller Oberklassen
Pfeil 9.2.1 Klassenobjekte
Pfeil 9.2.2 Objektidentifikation mit toString()
Pfeil 9.2.3 Objektgleichheit mit equals() und Identität
Pfeil 9.2.4 Klonen eines Objekts mit clone()
Pfeil 9.2.5 Hashcodes über hashCode() liefern
Pfeil 9.2.6 Aufräumen mit finalize()
Pfeil 9.2.7 Synchronisation
Pfeil 9.3 Klassenlader (Class Loader)
Pfeil 9.3.1 Woher die kleinen Klassen kommen
Pfeil 9.3.2 Setzen des Klassenpfades
Pfeil 9.3.3 Die wichtigsten drei Typen von Klassenladern
Pfeil 9.3.4 Der java.lang.ClassLoader
Pfeil 9.3.5 Hot Deployment mit dem URL-ClassLoader
Pfeil 9.3.6 Das jre/lib/endorsed-Verzeichnis
Pfeil 9.3.7 getContextClassLoader() vom Thread
Pfeil 9.4 Die Utility-Klasse System und Properties
Pfeil 9.4.1 Systemeigenschaften der Java-Umgebung
Pfeil 9.4.2 line.separator
Pfeil 9.4.3 Browser-Version abfragen
Pfeil 9.4.4 Property von der Konsole aus setzen
Pfeil 9.4.5 Umgebungsvariablen des Betriebssystems
Pfeil 9.4.6 Einfache Zeitmessung und Profiling
Pfeil 9.5 Ausführen externer Programme und Skripte
Pfeil 9.5.1 ProcessBuilder und Prozesskontrolle mit Process
Pfeil 9.5.2 Einen Browser/E-Mail-Client/Editor aufrufen
Pfeil 9.5.3 Ausführen von Skripten
Pfeil 9.6 Benutzereinstellungen
Pfeil 9.6.1 Benutzereinstellungen in Windows-Registry oder XML-Dokumenten
Pfeil 9.6.2 Einträge einfügen, auslesen und löschen
Pfeil 9.6.3 Auslesen der Daten und Schreiben in anderem Format
Pfeil 9.6.4 Auf Ereignisse horchen
Pfeil 9.6.5 Zugriff auf die gesamte Windows-Registry
Pfeil 9.7 Musik abspielen
Pfeil 9.7.1 Die Arbeit mit AudioClip
Pfeil 9.7.2 Java Sound API
Pfeil 9.8 Annotationen
Pfeil 9.8.1 Annotationstypen
Pfeil 9.8.2 Common Annotations
Pfeil 9.8.3 Annotationen für Web-Services
Pfeil 9.8.4 Annotationen für XML-Mapping
Pfeil 9.9 Zum Weiterlesen


Galileo Computing - Zum Seitenanfang

9.8 Annotationen Zur nächsten ÜberschriftZur vorigen Überschrift

Seit Java 5 gibt es eine in die Programmiersprache eingebaute Fähigkeit für Metadaten: Annotationen. Das folgende Beispiel zeigt einen denkbaren Einsatz für Web-Services.

import javax.jws.WebService; 
import javax.jws.WebMethod; 
 
@WebService 
public class Calculator 
{ 
  @WebMethod 
  public int add( int x, int y ) 
  { 
    return x + y; 
  } 
}

Die Annotationen sind Auszeichnungen der Metadaten und beginnen mit einem @-Zeichen, wie auch die JavaDoc-Tags mit einem solchen Zeichen beginnen. (Das @-Zeichen, AT, ist auch eine gute Abkürzung für Annotation Type.) Hinter dem @ steht ein Bezeichner, der im Allgemeinen ein Wie-Wort (für die Linguisten: Adjektiv) sein sollte.


Galileo Computing - Zum Seitenanfang

9.8.1 Annotationstypen Zur nächsten ÜberschriftZur vorigen Überschrift

Oft haben wir schon Anwendungen vom Annotationstyp @Override gesehen. Daneben gibt es im Paket java.lang zwei weitere Annotationstypen. Zusammengefasst ergeben sich:


Tabelle 9.4 Annotationen aus dem Paket java.lang

@Override

Die annotierte Methode überschreibt eine Methode aus der Oberklasse oder implementiert eine Methode einer Schnittstelle.

@Deprecated

Das markierte Element ist veraltet und sollte nicht mehr verwendet werden.

@SuppressWarnings

Unterdrückt bestimmte Compiler-Warnungen.


Die drei Annotationen haben vom Compiler beziehungsweise Laufzeitsystem eine besondere Semantik. Einige weitere Annotationen, die nur für eigene Annotationstypen gedacht sind, beleuchtet das Kapitel 23 näher.

Begriffe Annotation und Annotationstyp

Die Annotationstypen sind die Deklarationen wie etwa ein Klassentyp. Werden sie an ein Element gehängt, ist es eine konkrete Annotation. Während also Override selbst der Annotationstyp ist, ist @Override vor toString() die konkrete Annotation.

@Deprecated

Die Annotation @Deprecated übernimmt die gleiche Aufgabe wie das JavaDoc-Tag @deprecated. Ein Unterschied bleibt: Das JavaDoc-Tag kann nur vom JavaDoc (beziehungsweise einem anderen Doclet) ausgewertet werden, während Annotationen auch andere Tools selbst zur Laufzeit auswerten können.

@Deprecated 
public void fubar() { ... }

Falls ein Programmstück die @Deprecated-Methode fubar() [Im US-Militär-Slang steht das für: »Fucked up beyond any recognition«. ] nutzt, gibt der Compiler eine einfache Meldung aus. Die Übersetzung mit dem Schalter -Xlint:deprecation liefert die genauen Warnungen; im Moment ist das mit -deprecation gleich.

Annotationen mit zusätzlichen Informationen

Die Annotationen @Override und @Deprecated gehören zur Klasse der Marker-Annotationen, weil keine zusätzlichen Angaben nötig (und erlaubt) sind. Zusätzlich gibt es die »Single-value annotation«, die genau eine zusätzliche Information bekommt, und eine volle Annotation mit beliebigen Schlüssel/Werte-Paaren.


@Annotationstyp

Marker-Annotation

@Annotationstyp( Wert )

Annotation mit genau einem Wert

@Annotationstyp( Schlüssel1=Wert1, Schlüssel2=Wert2, ... )

Volle Annotation mit Schlüsse/Werte-Paaren


@SuppressWarnings

Die Annotation @SuppressWarnings steuert Compiler-Warnungen. Unterschiedliche Werte bestimmen genauer, welche Hinweise unterdrückt werden. Beliebt ist die Annotation bei der Umstellung von älterem Quellcode mit nicht-typisierten Datenstrukturen, um die Anzahl der Warnungen zu minimieren. Da sich mit Java 5.0 das Klassenformat änderte, gibt der Compiler beim Übersetzen älterer Klassen schnell eine »unchecked«-Meldung aus.


Beispiel Beispiel Der Compiler soll für die ungenerisch verwendete Liste keine Meldung geben:

Listing 9.26 com/tutego/insel/annotation/SuppressWarningsDemo.java, main()

@SuppressWarnings( "unchecked" ) 
public static void main( String[] args ) 
{ 
  ArrayList list = new ArrayList(); 
  list.add( "SuppressWarnings" ); 
}

Die Annotation der lokalen Variable funktioniert nicht!


@SuppressWarnings("unchecked") ist eine Abkürzung von @SuppressWarnings(value= {"unchecked"});. Die zweite Schreibweise macht deutlich, dass ein Feld von Strings übergeben werden kann.


Galileo Computing - Zum Seitenanfang

9.8.2 Common Annotations Zur nächsten ÜberschriftZur vorigen Überschrift

In Java 6 sind über die JSR 250 »Common Annotations« weitere Annotationen für Java SE und Java EE eingezogen. Obwohl in der Java Standard Edition die Annotationen kaum eine Rolle spielen, sind sie doch eine wichtige Ausgangsbasis für Enterprise Frameworks. Folgende Annotationen sind im Paket javax.annotation enthalten:

  • javax.annotation.Generated
  • javax.annotation.Resource, javax.annotation.Resources
  • javax.annotation.PostConstruct, javax.annotation.PreDestroy
  • javax.annotation.security.RunAs
  • javax.annotation.security.RolesAllowed
  • javax.annotation.security.PermitAll, javax.annotation.security.DenyAll

Galileo Computing - Zum Seitenanfang

9.8.3 Annotationen für Web-Services Zur nächsten ÜberschriftZur vorigen Überschrift

Unser erstes Beispiel für Annotationen zeigt ihren Einsatz zur Definition von Web-Services. Die Annotationen wurden erstmalig im JSR 181 »Web Services Metadata for the Java Platform« definiert und sind nun Teil von Mustang. Das Kapitel 18 beschäftigt sich etwas ausführlicher mit den Annotationen unter dem Paket javax.jws. Des Weiteren sind Annotationen aus einer zweiten JSR 224 eingezogen, die den Titel »Java API for XML-Based Web Services (JAX-WS) 2.0« trägt. Die Annotationen sowie Klassen und Schnittstellen teilen sich das Paket javax.xml.ws.


Galileo Computing - Zum Seitenanfang

9.8.4 Annotationen für XML-Mapping topZur vorigen Überschrift

Teil der JSR 222 sind neue Annotationen für die Abbildung von XML-Dokumenten auf Objekte und umgekehrt. Das Paket javax.xml.bind.annotation umfasst dazu etwa 30 Annotationen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück



Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de