A.3.1 | Allgemeines |
HotSpot Virtual Machine Die neue HotSpot Virtual Machine bringt eine deutliche Geschwindigkeitsverbesserung. Die HotSpot-Architektur ermittelt zur Laufzeit oft ausgeführte Programmteile, die die »Flaschenhälse« hinsichtlich der Geschwindigkeit sind (so genannte »hot spots«) und übersetzt diese zur schnelleren Ausführung in plattformspezifischen Maschinencode. Weitere Merkmale der HotSpot Virtual Machine sind:
- Methodenaufrufe können durch den Code des Methodenrumpfs ersetzt werden (»Inlining«).
- Schnellere Thread-Synchronisierung
- Verbesserter Garbage Collector
Java Naming and Directory Interface (JNDI) JNDI dient zum Zugriff auf Verzeichnisdienste wie LDAP. Dieses API war zuvor als optionales Paket verfügbar und wurde in 1.3 zu einem festen Bestandteil der Java-2-Plattform gemacht. Damit ist JNDI in der Standard-Distribution des JDK enthalten. Remote Methode Invocation (RMI) Für RMI kann jetzt auch das IIOP-Protokoll von CORBA eingesetzt werden. Außerdem wurde die Geschwindigkeit bei der Serialisierung optimiert. Indexerstellung für JAR-Dateien JAR-Dateien können mit einer Indexdatei versehen werden, in der die Namen aller enthaltenen Klassen aufgeführt sind. Durch die Auswertung dieser Indexdateien können insbesondere bei Applets Klassen effizienter geladen werden. Das Interessante an diesem Feature ist, dass eine Indexdatei auch über mehrere JAR-Dateien erstellt werden kann. Dadurch kann auf Anhieb die richtige JAR-Datei ermittelt und geladen werden. Beschleunigung beim Laden von Applet-Ressourcen Mit neuen Applet-Parametern kann spezifiert werden, dass JAR-Dateien vom Java-Plug-in in einem besonderen Cache zwischengespeichert werden, der nicht vom Browser überschrieben wird. Auf diese Weise kann die Start-Zeit von Applets unabhängig vom Zustand des Browser-Cache verkürzt werden. Zusätzlich unterstützt das Java-Plug-in das Laden von JAR-Dateien, die lokal vorinstalliert sind.
Installation von Erweiterungen Im Manifest von JAR-Dateien können optionale Pakete angegeben werden, die von einem Applet benötigt werden, aber nicht Teil der Standard-Laufzeitumgebung sind. Das Java-Plug-in kann die JAR-Dateien anhand einer im Manifest angegebenen URL herunterladen und lokal abspeichern. Java-2D-Verbesserungen Dieses API unterstützt jetzt mehrere Bildschirme, das Laden von Bildern im PNG-Format sowie das dynamische Laden von Fonts. Darüber hinaus wurde die Handhabung von Farbpaletten verbessert. Umstellung der Motif-Version auf Solaris Auf Solaris wird jetzt Motif 2.1 verwendet. Diese Version ist kompatibel zur bisher verwendeten Version 1.2 und ist für parallele Applikationen synchronisiert (thread-safe). AWT-Verbesserungen Unter anderem wurden beim AWT folgende Neuerungen eingeführt:
- Unterstützung für mehrere Monitore
- Mit dem neuen Event-Typ HierarchyEvent kann auf Veränderungen in der Komponenten-Hierarchie reagiert werden. Dies bezieht sich sowohl auf das Entfernen oder Hinzufügen von Komponenten als auch auf Größenveränderungen oder Änderungen der Sichtbarkeit einer übergeordneten Komponente.
- Für eine bessere Druckunterstützung können mit den Klassen PageAttributes und JobAttributes genauere Einstellungen für Druckaufträge gemacht werden.
Swing-Verbesserungen An einigen Swing-Komponenten wurden Detailverbesserungen vorgenommen. Verbesserungen am Security-API Bei diesem API wurden zahlreiche Detailverbesserungen vorgenommen. Netzwerk-Verbesserungen
- In Analogie zum verbindungsorientierten Socket greift seit Version 1.4 auch DatagramSocket auf eine DatagramSocketImplFactory zurück, um sich eine Socket-Implementierung zu holen. Dies vereinfacht die Verwendung eigener Implementierungen für Datagramm-Sockets.
- Die Klasse HttpURLConnection wurde für die Konformität zu HTTP 1.1 um zwei Statuscodes erweitert. Außerdem werden HTTP-Redirects unterstützt.
- Neben den bisher zur Verfügung stehenden Socket-Optionen kann auch die Keepalive-Option aktiviert werden. Außerdem kann der Wert für das Type-Of-Service Feld im IP-Header gesetzt werden.
- Die Klasse Socket wurde um zwei Methoden zur Unterstützung von halb geschlossenen Sockets erweitert: shutdownInput() und shutdownOutput().
- Die URL-bezogenen Klassen wurden um Zugriffsmethoden für die Felder einer URL erweitert.
Java Platform Debugger Architecture (JPDA) Diese Spezifikation definiert eine Architektur und ein API zum Debuggen von Java-Programmen. Diese Architektur sieht ein Backend, ein Frontend sowie einen entsprechenden Kommunikationskanal vor. Das Backend läuft in der Virtual Machine und kommuniziert mit dem Frontend, das beispielsweise eine GUI-Applikation sein kann. Durch die Trennung von Backend und Frontend ist auch das entfernte Debuggen möglich. JPDA definiert hierzu lediglich das Kommunikationsprotokoll zwischen Backend und Frontend, macht aber keine Vorgaben über das dazwischenliegende Medium. Änderungen bei den JDK-Tools Die wichtigsten Änderungen an den JDK-Tools sind nachfolgend aufgeführt:
- javac wurde komplett neu implementiert und läuft deutlich schneller. Die -X-Optionen werden nicht mehr unterstützt.
- jar kann einen Index für Archivdateien erstellen, um die Suche nach Klassen und Ressourcen in JAR-Dateien deutlich effizienter zu machen.
- Bei jarsigner und keytool kann ein Krypto-Provider mit der neuen Option -provider angegeben werden.