1.4 Java-Plattformen: Java SE, Java EE und Java ME 

Die Java-Plattform besteht aus Projekten, die es erlauben, Java-Programme auszuführen. Im Moment werden vier Plattformen unterschieden: Java SE, Java ME, Java Card und Java EE.
1.4.1 Die Java SE-Plattform 

Die Java Platform Standard Edition (Java SE) – früher J2SE genannt – ist eine Systemumgebung zur Entwicklung und Ausführung von Java-Programmen. Java SE enthält alles, was zur Entwicklung von Java-Programmen nötig ist. Obwohl die Begrifflichkeit etwas unscharf ist, lässt sich die Java SE als Spezifikation verstehen und nicht als Implementierung. Damit Java-Programme übersetzt und ausgeführt werden können, müssen aber ein konkreter Compiler, Interpreter und die Java-Bibliotheken auf unserem Rechner installiert sein. Das freie und mittlerweile unter der GPL stehende JDK von Oracle ist üblicherweise die Realisierung der Java SE für Windows, Solaris OS und Linux. Es gibt allerdings auch alternative Implementierungen der Java SE-Bibliotheken, etwa die Open-Source-Variante Apache Harmony [http://harmony.apache.org/ ] und GNU Classpath [http://www.gnu.org/software/classpath/ ] . Auch gibt es verschiedene Laufzeitumgebungen, doch uns interessiert im Folgenden nur die JVM von Oracle.
Versionen der Java SE
Am 23. Mai 1995 stellte damals noch Sun Java erstmals der breiten Öffentlichkeit vor. Seitdem ist viel passiert, und in jeder Version erweiterte sich die Java-Bibliothek. In den Versionen Java 1.1 und Java 5 gab es größere Änderungen an der Programmiersprache selbst. Java 7 wird auch wieder größere Änderungen bekommen. Dabei gibt es von einer Version zur nächsten kaum Inkompatibilitäten. [Die Seite http://tutego.de/go/migratingtojava5 zeigt auf, wie Walmart der Umstieg auf Java 5 gelang – relativ problemlos: »[…] the overall feeling is that a migration to Java 1.5 in a production environment can be a mostly painless exercise.« ]
| Version | Datum | Einige Neuerungen bzw. Besonderheiten |
|
1.0, Urversion |
1995 |
Die 1.0.x-Versionen lösen diverse Sicherheitsprobleme. |
|
1.1 |
Februar 1997 |
Neuerungen bei der Ereignisbehandlung, beim Umgang mit Unicode-Dateien (Reader/Writer statt nur Streams), außerdem Datenbankunterstützung via JDBC sowie innere Klassen und eine standardisierte Unterstützung für Nicht-Java-Code (nativen Code) |
|
1.2 |
November 1998 |
Heißt nun nicht mehr JDK, sondern Java 2 Software Development Kit (SDK). Swing ist die neue Bibliothek für grafische Oberflächen und eine Collection-API für Datenstrukturen und Algorithmen. |
|
1.3 |
Mai 2000 |
Namensdienste mit JNDI, verteilte Programmierung mit RMI/IIOP, Sound-Unterstützung |
|
1.4 |
Februar 2002 |
Schnittstelle für XML-Parser, Logging, neues IO-System (NIO), reguläre Ausdrücke, Assertions |
|
5 |
September 2004 |
Das Java SDK heißt wieder JDK. Neu sind generische Typen, typsichere Aufzählungen, erweitertes for, Autoboxing, Annotationen. |
|
6 |
Ende 2006 |
Web-Services, Skript-Unterstützung, Compiler-API, Java-Objekte an XML-Dokumente binden, System Tray |
|
7 |
Geplant Mitte 2011 |
Kleine Sprachänderungen, NIO2, erste pure GPL-Version |
|
8 |
Geplant Ende 2012 |
Weitere Sprachänderungen wie Closures, Plattform-Modularisierung |
Die Produktzyklen waren in der Vergangenheit relativ konstant. Einen Bruch gibt es bei der kommenden Version von Java 7, auf die Entwickler schon sehr lange warten. Gründe für die Verzögerung könnten die Änderung auf die Open-Source-Lizenz GPL, der Übergang zu Oracle und die Entwicklung von JavaFX sein, in die viel Energie investiert wurde.
Codenamen und Namensänderungen
Mit Java 5 entfiel das Präfix »1.« in der Versionskennung des Produkts, es heißt also Java 6 statt Java 1.6 und Java 7 statt Java 1.7; in den Entwickler-Versionen bleibt es aber weiterhin gültig. [Siehe dazu http://java.sun.com/j2se/1.5.0/docs/relnotes/version-5.0.html und http://java.sun.com/j2se/versioning_naming.html. ] Auch das Anhängsel ».0« für die Hauptversionen und die Unterversionen ist verschwunden – es bleiben ganze Zahlen mit Updates. Schlussendlich fiel auch die »2« aus den in Java 1.2 eingeführten Begriffen J2SE, J2ME und J2EE heraus; es heißt aktuell Java SE, Java ME und Java EE. Früher vergab Sun auch Codenamen, wie Tiger für Java 5, doch das ist Vergangenheit. [http://java.sun.com/j2se/codenames.html ]
1.4.2 Java für die Kleinen 

Die Java Platform, Micro Edition (Java ME) ist eine Umgebung für kompakte tragbare Computer, also PDAs, Organizer, Telefone. Java ist heutzutage auf fast jedem Handy zu finden, und Sun sprach 2007 von über 2 Milliarden Java-fähigen Telefonen. [Quelle: http://de.sun.com/sunnews/events/2007/20071203/pdf/TD_FRA_GoslingKeynote.pdf ] Die Bedeutung der Java ME schwindet jedoch, da moderne Geräte mittlerweile so viel Power haben, dass sie eine normale JVM laufen lassen können. Die Referenzimplementierung der Java ME heißt phoneMe [https://phoneme.dev.java.net/ ] und steht unter der GPL; sie implementiert weitere Standards, wie Java Mobile Media API, Scalable 2D Vector Graphics API und weitere.
Seitenwind bekommt Java ME von Android, einem Projekt, das von Google initiiert wurde und nun in den Händen der Open Handset Alliance liegt. Android ist nicht nur eine Software-Plattform, sondern auch ein Betriebssystem. Statt einer JVM mit standardisiertem Java-Bytecode nutzt Android einen völlig anderen Bytecode und führt ihn auf der Dalvik Virtual Machine aus.
1.4.3 Java für die ganz ganz Kleinen 

Mit Java Card definiert Oracle einen Standard für Java-ähnliche Programme auf Chipkarten (Smartcards). Der Sprachstandard von Java ist allerdings etwas eingeschränkt. Die Ausgabe vom Java-Compiler ist ein Bytecode, der dem Standard-Bytecode ähnlich ist. Dieser Bytecode wird dann auf der Java Card Virtual Machine ausgeführt, die auf der Smart-Card (etwa einer SIM-Karte) Platz findet. Da es jedoch ganz andere Speicheranforderungen für so ein winziges System gibt, ist die Laufzeitumgebung nicht mit der Standard-JVM vergleichbar. Es gibt keine Threads und keine Gargabe-Collection. Auch bei den Bibliotheken gibt es Unterschiede. Nicht nur, dass viele bekannte Klassen fehlen, umgekehrt gehören starke kryptografische Algorithmen mit zum Paket und natürlich ein Paket, damit die Kartenanwendung mit der Außenwelt kommunizieren kann. Seit dem Java Card 3.0-Standard gibt es eine Classic Edition und eine Connected Edition, wobei die Connected Edition viele Einschränkungen nicht mehr hat; so gibt es nun auch Threads und Garbage-Collection.
Mit dem Java Card-Standard können viel einfacher Programme auf Karten unterschiedlicher Hersteller gebracht werden – sofern die Karte dem Standard entspricht. Vorher war das immer etwas schwierig, da jeder Kartenhersteller unterschiedliche APIs und Tools verwendete und die Karte in der Regel in einem C-Dialekt programmiert wurde.
1.4.4 Java für die Großen 

Die Java Platform, Enterprise Edition (Java EE) ist ein Aufsatz für die Java SE und integriert Pakete, die zur Entwicklung von Geschäftsanwendungen (Enterprise-Applikationen genannt) nötig sind. Dazu zählen etwa die Komponententechnologie der Enterprise JavaBeans (EJBs), JSP/JSF/Servlets für dynamische Webseiten, die Java-Mail-API und weitere. Die Referenzimplementierung für Java EE 5 und Java EE 6 ist GlassFish. Dieses Buch geht auf einige Bibliotheken aus der Java EE kurz ein, etwa auf JSP und Servlets oder Web-Services.
Interessant ist zu beobachten, dass im Laufe der letzten Jahre Teile aus der Java EE in die Java SE gewandert sind. Möglicherweise kommt in der Zukunft Technologie für objekt-relationales Mapping (JPA) aus der Java EE in die Standard Edition.




Jetzt bestellen





