Advanced Java
Services
|
Java 2 (Versionsgeschichte von 1 bis 6)
|
|
Anzahl der Klassen in der API
Man kann die Entwicklung verschieden nennen, beeindruckend, rasant, beängstigend, je nach Geschmack...
Die folgende Graphik zeigt eine (ziemlich) maßstabsgetreue Darstellung der Anzahl der Klassen
ab der Version 1.0 . Man erkennt daraus inzwischen in Ansätzen eine logistische Kurve.
Die wichtigsten Neuerungen der verschiedenen Versionen
Codename Oak
Diese erste Version enthielt bereits die plattformunabhängige graphische Oberfläche AWT (Abstract Window Toolkit), die
allerdings noch ein plattformabhängiges look and feel hatte. Für die damalige Zeit eine Sensation.
- Einführung eines bis heute gültigen neuen Eventmodells (das Package java.awt.event)
- Innere und lokale Klassen
- JDBC (Schnittstelle für den Zugriff auf Datenbanken, das Package java.sql)
- RMI (Remote Method Invocation, das Package java.lang.reflect)
- JavaBeans (Specifikation der Architektur einer wiederverwendbaren Klasse)
- Reflection (das Package java.lang.reflect)
Codename Playground
- Das schon im Vorjahr als Zusatz lieferbare Swingpackage wurde in die Version 1.2 integriert und ermöglichte erstmals
ein plattformunabhängiges look and feel zu entwerfen (Metal LAF).
- Collection Framework (Redesign und Ausbau der Behälterklassen)
- strictfp (neues Schlüsselwort)
Das neue Schlüsselwort kann für Klassen, Interfaces und Methoden verwendet werden und garantiert, daß Berechnungen
auf allen Platformen die gleichen Ergebnisse liefern. Dazu werden sowohl float- wie double-Berechnungen nach dem
sog. IEEE-Standard durchgeführt.
Codename Kestrel
- Erweiterungen im Bereich RMI
- Unterstützung von CORBA (das Package org.omg.CORBA)
- JNDI - Java Naming and Directory Interface (das Package javax.naming)
- Unterstützung von Audiodateien (das Package javax.sound.sampled)
Codename Merlin
Die Entwiclung wurde zum Erstenmal unterstützt von der Java Community Platform (JSR 59)
- Reguläre Ausdrücke (nach dem Vorbild von Perl)
- Lesen und Schreiben von XML-Dateien (Package javax.xml und seine Unterpackages) (JSR 5 und JSR 63)
- Verkettung von Exceptions
- Verallgemeinertes Dateihandling auf Grundlage von Buffers (Package java.nio) (JSR 51)
- Unterstützung des Internetprotokolls 6 (IPv6)
- Image I/O API zum einfachen Lesen von Bilddateien (jpg, png, etc.)
- Klassen für kryptographische Operationen (Package javax.crypto)
- Logging API (Package java.util.logging) (JSR 47)
- Preferences API (Package jav.util.prefs)
- Java Web Start (JSR 56)
- assert (neues Schlüsselwort)
5 (intern 1.5, 30.September 2004)
Codename Tiger
- Generics
Einführung generischer Typen schafft Typsicherheit zur Compilezeit, Typecast nur noch selten notwendig.
- Annotations
Klassen und Methoden können durch Metadaten näher spezifiziert werden (JSR 175)
- Autoboxing/Unboxing
Automatische Typkonvertierung zwischen primitiven Datentypen und Hüllklassen.
- Enumerationen und das Schlüsselwort enum
Typsichere Auflistung von Werten (JSR 201)
- Varargs
Beim letzten Parameter einer Methode können durch eine spezielle Syntax ( int... zahlen) beliebig viele
Parameter dieses Typs übergeben werden (der Compiler erzeugt hierfür in temporäres Array).
Dieses Feature wurde von der Programmiersprache C übernommen.
- Redesign der Collectionhierarchie durch Einführung des Interfaces Iterable.
Dadurch wurde die for each Schleife für Collections verwendbar.
- Erweiterung der for Schleife zur for each Schleife
- Automatische Erzeugung von stub-Klassen für RMI
- Ein weiteres LAF (look and feel) für die Swingklassen
- Erweiterung bei Threads durch das Package java.util.concurrent.
- Die Klasse Scanner
Komfortables Einlesen von Daten von verschiedenen Streams (u.a. von der Konsole).
6 (intern 1.6, 11.Dezember 2006)
Codename Mustang (JSR 270)
- Unterstützung von Scriptsprachen (JavaScript Rhino von Mozilla)
- Verbesserte Unterstützung von Web Services durch JAX-WS (JSR 224)
Das Package javax.xml.ws und seine Unterpackages.
- Überarbeitung der JDBC-Schnittstelle (Unterstützung der Version 4 nach JSR 221)
- Erweiterungen bei Annotations
- Deutliche Performanceverbesserungen für Swingapplikationen
- Performanceverbesserungen an der JVM
- Optimierunge des Compilers