A.1.1 | Allgemeines |
Verwerfen von Methoden und Klassen In den Nachfolgeversionen von Java 1.0 wurden einige Klassen und Klassenbestandteile wieder verworfen und durch neue ersetzt. Gründe hierfür waren unter anderem mangelnde Portabilität und Anpassungsfähigkeit hinsichtlich der Internationalisierung oder einfach nur ungünstige Bezeichner. Die alten Methoden werden aber weiterhin unterstützt, um Abwärtskompatibilität zu wahren. Für Neuentwicklungen und Überarbeitungen wird aber stark davon abgeraten, verworfene Methoden zu benutzen. Um die Entwickler bei der Umstellung auf das jeweils neueste API zu unterstützen, liefert der Compiler des JDK Warnmeldungen, wenn alte Methoden verwendet werden. Optional wird auch ausgegeben, welche verworfenen Methoden gefunden wurden und wie sie zu ersetzen sind.
Um diesem Umstand bei der Dokumentation Rechnung zu tragen, wurde das javadoc-Tag @deprecated eingeführt, mit dem eine Methode als verworfen gekennzeichnet werden kann. Optional kann dahinter die Methode oder das Element angegeben werden, das als Ersatz zu verwenden ist.
Geschachtelte Klassen Klassen können auch innerhalb einer anderen Klasse oder auch lokal in einer Methode vereinbart werden. Neue Verwendungen von final final kann jetzt auch für Methodenparameter, lokale Variablen in Methoden und den Parameter von catch-Anweisungen benutzt werden. Hierdurch darf die Variable innerhalb des betreffenden Blocks nicht verändert werden. Weiterhin gibt es die leeren Finals, d. h. Konstanten, denen erst nach der Deklaration höchstens einmal ein Wert zugewiesen wird. Anonyme Arrays In Analogie zu den Literalen der einfachen Datentypen können jetzt auch Array-Literale verwendet werden, ohne eine Variable dafür zu vereinbaren. Klassenliterale Das Class-Objekt einer Klasse kann auch deklarativ ermittelt werden: Class c = java.lang.Integer.class;Beeinflussung des Finalisierungszeitpunkts Neue Methoden der Klasse System gestatten es, die Ausführung von Finalisierern anzustoßen. Neue Wrapper-Klassen Durch die Einführung der Klassen Short, Byte und Void gibt es zu allen einfachen Datentypen eine entsprechende Wrapper-Klasse. Object Serialization Die Object Serialization bietet die Möglichkeit, Java-Objekte persistent zu machen. Die persistenten Objekte können so in Dateien gespeichert oder über Netzwerkverbindungen übertragen werden. Letzteres bildet die Grundlage für RMI. Neue AWT-Features
- Das neue Event-Modell ermöglicht ein vereinfachtes Event-Handling für komplexe Oberflächen. Es basiert darauf, dass sich ein Objekt bei einer Komponente für die Benachrichtigung über das Auftreten eines bestimmten Ereignisses registrieren muss.
- Klassen, die das Drucken aus Java heraus erlauben
- Tastatur-Shortcuts für Menüfunktionen
- Unterstützung für Zwischenablagen
- Die Windows-Implementierung des AWT wurde komplett neu geschrieben, um die Einheitlichkeit zwischen den Plattformen zu erhöhen.
Neue AWT-Komponenten Internationalization Verschiedene neue Features erleichtern die Entwicklung multinationaler Anwendungen:
- Die neuen Reader- und Writer-Klassen im io-Paket stellen Streams zur vollen Unicode-Unterstützung zur Verfügung. Beim Schreiben und Lesen werden die Zeichen aus dem Zeichensatz einer bestimmten Plattform nach Unicode transformiert.
- Verbesserte Unterstützung verschiedener Zeit- und Datumsformate
- Unterstützung für mehrsprachige Menüs, Meldungen und dergleichen
JAR-Archive und signierte Applets Mit JAR-Archiven können Bytecode-Dateien in einer Archivdatei zusammengefasst werden. Für Applets können JAR-Archive auch Ressourcen wie z. B. Bilder enthalten, woraus ein erheblicher Geschwindigkeitsgewinn beim Download resultiert, da alle benötigten Dateien mit einer einzigen Netzwerkverbindung heruntergeladen werden können. Darüber hinaus bilden die JAR-Archive die Basis für die elektronische Signatur von Java-Applets. Solche signierten Applets haben die gleichen Zugriffsrechte wie lokale Applets. Neue Netzwerk-Features
- Unterstützung von IP-Multicasting
- Unterstützung einiger der Socket-Optionen von BSD-UNIX. Unter anderem besteht die Möglichkeit, einen Timeout für Socket-Operationen zu spezifizieren.
- Die Socket-Klassen wurden so umgestaltet, dass auf einfache Weise Unterklassen definiert werden können.
- Die Java-Sockets unterstützen SOCKS-Proxies.
Ressourcen Auf die Ressourcen, die zu einem Programm gehören, wie Bilder oder Zeichenketten, kann jetzt in einheitlicher Weise zugegriffen werden. Ressourcen werden hierbei mit Zeichenketten identifiziert, die wie Property-Namen strukturiert sind.