Java (Technik)
Java-Technik (englisch Java Technology) ist eine hauptsächlich
von Sun Microsystems entwickelte Sammlung von Spezifikationen,
die einerseits die Programmiersprache Java und andererseits
verschiedene Laufzeitumgebungen für Computerprogramme
definieren. Diese Computerprogramme werden meistens in Java geschrieben.
Die Java-Technik besteht aus den folgenden Komponenten:
- Programmiersprache Java
- Java-Plattform,
die Ablaufumgebung, um Java-Programme zu nutzen:
- Java Platform, Standard Edition
- Java Platform, Enterprise
Edition
- Java Platform, Micro Edition
- Java Card
Geschichte
Die Urversion von Java – auch Oak (Object Application
Kernel) genannt – wurde in einem Zeitraum von 18 Monaten vom Frühjahr
1991 bis Sommer 1992 unter dem Namen The Green Project von Patrick
Naughton, Mike Sheridan, James Gosling und Bill Joy
sowie neun weiteren Entwicklern im Auftrag des US-amerikanischen
Computerherstellers Sun Microsystems entwickelt. James
Gosling war der Hauptentwickler. Ein Überbleibsel aus dem Green-Projekt ist
der Duke von Joe Palrang, der zum bekannten Symbol bzw. Maskottchen
geworden ist.
Der Name Oak hatte seinen Ursprung in einer Eiche (engl. oak),
die vor dem Fenster von James Gosling stand. Der Name musste jedoch aufgrund
rechtlicher Probleme (es gab bereits eine Software dieses Namens) verworfen
werden. Man entschied sich für den Namen Java nach einer starken Kaffee-Sorte, die
speziell für Espresso
Verwendung findet (Java-Bohne) und die von den Entwicklern bevorzugt
getrunken wurde.
Das Ziel war nicht nur die Entwicklung einer weiteren Programmiersprache,
sondern einer vollständigen Betriebssystemumgebung, inklusive virtueller CPU,
für unterschiedlichste Einsatzzwecke. Das System sollte – der Legende nach –
beispielsweise eine Kaffeemaschine steuern können.
Die Entwicklung fand in einem unauffälligen Bürogebäude in der Sand Hill
Road in Menlo Park statt. Während der abgeschiedenen Entwicklungsphase kam es
zu keinem Austausch mit Sun Microsystems. Im Sommer 1992 schließlich war
die erste Oak-basierte Anwendung fertig gestellt – “an interactive, handheld
home-entertainment device controller with an animated touchscreen user
interface”. Diese Technologiedemonstration einer Touchscreen-basierten
Gerätesteuerung mit animierter Benutzeroberfläche (GUI) hatte den Namen *7 (StarSeven).
Nach der Vorführung von StarSeven, mit dem zahlreiche Geräte interaktiv
gesteuert werden konnten, wurden Unternehmen aus der Kabelfernseh-Branche
aufmerksam und aus dem Hinterzimmer-Projekt „The Green Project“ entstand die
Firma „FirstPerson“. Aus dem Büro wurde ein Bürohaus in der 100 Hamilton Avenue
in Palo Alto.
Da die Belegschaft inzwischen von 13 auf 70 Mitarbeiter gewachsen und die
Zeit für interaktive digitale Mehrwertdienste im Bereich des Kabelfernsehens
noch nicht reif war, suchte sich die junge Firma neue Betätigungsfelder. Nach
einem dreitägigen Treffen von John Gage, James Gosling, Bill Joy, Patrick
Naughton, Wayne Rosing und Eric Schmidt in „The Inn at Squaw Creek“ bei Lake Tahoe
war schnell klar: das Internet sollte es sein.
Auf Basis des Urvaters aller grafischen Webbrowser,
Mosaic,
wurde also ein um Java erweiterter Browser geschaffen
– der „WebRunner“ (nach dem Film „Blade
Runner“). Später wurde aus „WebRunner“ dann der offiziell bekannte HotJava-Browser.
Im März 1995 wurde die erste Alphaversion (1.0a2) des Java-Quellcodes für
die Öffentlichkeit freigegeben, und die Downloadzahlen explodierten. Wenig
später, am 23. Mai 1995, wurde Java erstmals offiziell der Öffentlichkeit
vorgestellt, in den „San Jose Mercury News“.
Der Durchbruch kam mit der Integration von Java in den Browser Netscape
Navigator – besiegelt durch einen Handschlag zwischen Eric Schmidt und George
Paolini von Sun Microsystems sowie Marc
Andreessen von Netscape. Ort und Zeit: 4 Uhr
morgens in einem Zimmer des Sheraton-Palace-Hotels in der Nähe des
Convention-Centers.
Der Name Java
Der Name für die neue Technologie war schnell gefunden: die meisten
Programmierer bevorzugten das Straßencafé „Java City - roasters of fine coffee“
in Menlo Park, unweit ihres Bürogebäudes, wohin sie ab und zu in der
Mittagspause gingen, um nach dem Essen noch einen Kaffee zu trinken. Die
beliebteste Kaffeesorte unter den Programmierern war Java. So war der Name für
die neue Technologie gefunden. Auch der Name „Java Beans“ leitet sich aus
dieser Begebenheit ab.
Versionen
Version 1
Die 1996 erschienene Java-Version 1.0 enthielt noch eine überschaubare Menge
von Standardpaketen, die in späteren Versionen schnell anwuchs:
java.lang: elementare Klassen, z. B.ObjectundSystemjava.io: Ein- und Ausgabejava.util: z. B. Datenstrukturen und eine Datumsklassejava.net: einfache TCP/IP-Klassenjava.awt: grundlegende Klassen für grafische Benutzeroberflächenjava.applet: eine Klasse für die bekannten Applets.
Obwohl diese neue Sprache primär zum Entwickeln von Applets gedacht war, bot
sie schon in der ersten Version Möglichkeiten, die weit darüber hinaus
reichten.
Version 1.1
Eine Spracherweiterung wurde 1997 mit Java 1.1 vorgenommen, die Syntax wurde
um das Konzept der inneren Klassen erweitert. Dies ging auch einher mit
einem Umbau der Ereignisbehandlung hin
zu einem Callback-System mit so genannten Listenern.
Außerdem wurde die Standardbibliothek erweitert:
- Klassen für die Internationalisierung (so genannte
„Ressourcenbündel“)
- Java-Komponenten,
die Java
Beans
- das Dateiformat JAR
für die Paketierung ganzer Bibliotheken oder Anwendungen als Java-Archive
- Klassen für numerisches
Rechnen (
BigIntegerundBigDecimal) - ein Protokoll für verteilte
Programme, die Remote Method Invocation (RMI)
- Objektserialisierung für
die persistente
(d. h. dauerhafte) Speicherung von Objekten, z. B. in Dateien
- JDBC für den
Zugriff auf relationale Datenbanken
- Sicherheitsfunktionen,
z. B. zum Signieren von JAR-Dateien und
Applets
In den Versionen ab 1.1.5 war bereits Swing verfügbar – jedoch zählte dieses
Framework noch nicht zum offiziellen Java. Besonders problematisch war, dass
Swing mit Erscheinen von 1.2 eine andere Paketstruktur aufwies und eine
Portierung notwendig machte.
Version 1.2
Java 2 (JDK 1.2) erschien im Jahr 1998.
Mit Erscheinen dieser Version sprach Sun von Java 2, dementsprechend heißen die
Pakete Java 2 Platform, Standard Edition (J2SE) und statt Java
Development Kit (JDK) heißt es Java 2 Software Development Kit (J2SDK).
In dieser Version wurden Just-In-Time-Compiler eingeführt, womit die Ausführung
von Java-Programmen deutlich beschleunigt werden konnte. (Für jedes
Betriebssystem wird eine eigene Laufzeit-Bibliothek benötigt.) Die Programme
sind aber weiterhin lediglich „vorkompiliert“. Die Geschwindigkeit vollständig
kompilierter Programme wird nicht erreicht.
Erneut wurde die Standardbibliothek erweitert:
- neue Schnittstellen und
Implementierungen für Collections, also Datenstrukturen wie Listen,
Mengen und Maps (Assoziativlisten)
- die Oberflächen-Bibliothek Swing
- neue Grafik-Funktionen (die
Java 2D-API)
- Drag and Drop-Funktionalität
- verbesserte
Audio-Funktionen
- eine CORBA-Schnittstelle
- schwache Referenzen
– das sind solche Referenzen, die den Garbage-Collector nicht daran
hindern, das referenzierte Objekt zu entfernen
Im Jahr 1998 wurde auch der Java Community Process (JCP) eingeführt.
Diese Organisation steuert seitdem Änderungen an der Spezifikation von Java.
Für vorgeschlagene Änderungen wird ein Java Specification Request (JSR)
erstellt, der verschiedene Phasen durchläuft, bevor die Änderungen in Java Einzug
halten.
Version 1.3
2000 erschien J2SE 1.3 als nächster Evolutionsschritt, die API wurde erneut erweitert. Des
Weiteren wurde eine Engine mit Hotspot-Optimierung eingeführt. Das bedeutet,
dass häufig benutzte Codefragmente (Hotspots) vom Bytecode zur Laufzeit in
nativen Maschinencode übersetzt werden. Resultat war die deutlich gesteigerte
Performance.
Version 1.4
Erst 2002 wurde mit Erscheinen von J2SE 1.4 wieder die Sprache selbst
erweitert, was zuletzt bei Version 1.1 geschah. Ihr wurde eine Unterstützung
für Assertions hinzugefügt. Auch die API wurde
wieder erweitert, was insbesondere die Serverprogrammierung erleichtern soll.
Siehe auch: Servlet, Java Web Start, JSP, J2EE, J2ME, Javadoc, Blackdown
Version 5.0
Java 5.0 erschien am 30. September 2004 als Nachfolger der Version 1.4. Die
neueste Methode zur Vergabe der Versionsnummern von Sun besagt, dass eine
Java-Version nach außen 5.0, 6.0 etc. heißen soll (Produktnummer), wohingegen
es parallel dazu eine Entwicklerversion gibt, die der bekannten, traditionellen
Versionsnummerierung folgt (5.0-1.5, 6.0-1.6 etc.). Die „2“ z. B. aus J2EE wird somit ab
Version 5.0 der Java Enterprise Edition verschwinden, womit diese Version dann
JEE 5 heißt.
In der Version 5 gibt es umfangreiche Änderungen an der Sprache sowie
weitere API-Erweiterungen:
- Generische Typen (Generics)
- Vereinfachte Syntax für die
Iteration
über Collections, Maps und Arrays
- Autoboxing/-unboxing (d. h.
implizite Umwandlung von primitiven Datentypen in Objekte und zurück)
- Metadaten
mit Hilfe von Annotationen
- Syntaktische Unterstützung
für Aufzählungswerte („Enumerations“)
- Unterstützung für variable
Argumentenlisten von Methoden
- Statischer Import von
Klassen
- Erweiterte Look
and Feels
- Hilfsklassen für nebenläufige Programmierung im neuen Paket
java.util.concurrent - kovariante Ergebnistypen bei Methoden
Die zunächst für Java 5 („Tiger“-Release) geplanten Erweiterungen der
Ein-/Ausgabefunktionen (JSR
203) wurden erst auf Java 6
(„Mustang“-Release) und Anfang 2006 dann auf Java 7 („Dolphin“-Release)
verschoben.
Version 6
Die Java-Version 6 wurde am 11. Dezember 2006 veröffentlicht. Besonderes
Augenmerk wurde in dieser Version auf Diagnose, Überwachung und Management
gelegt. So wurde ein Framework zur Zusammenarbeit mit diversen Skriptsprachen,
wie z. B. PHP, Python, Ruby und Javascript
eingeführt.
Weitere Neuerungen sind eine verbesserte Darstellung von Desktop-Anwendungen
sowie die Integration von Java DB, einer in Java implementierten
relationalen Datenbank, die auf Apache
Derby basiert.
Das im Oktober 2008 veröffentlichte Update auf Version auf 1.6.0_10 brachte,
nicht wie sonst üblich, ausschließlich Fehlerbeseitigungen, sondern diverse
Änderungen der JVM, mit denen nicht bis zum Erscheinen von Java 7 gewartet
werden sollte. Zu den wichtigsten Neuerungen, die im Vorfeld bereits gefordert
wurden, gehörten unter anderem:
- ein „Next Generation Java
Plugin“, das dem Website-Betreiber mehr Möglichkeiten über eingebundene
Applets anbietet
- der für Webapplikationen
gedachte Java Kernel, der bei Bedarf eine minimale JVM installiert und nur
die nötigen Pakete herunterlädt und lokal speichert
- der Java Quick Starter
mithilfe dessen die Startzeit von Java-Applikationen deutlich verringert
wird was bis dahin einen der großen Kritikpunkte an Java darstellte
Eine vollständige Liste sowie detaillierte Beschreibungen sind der
Ankündigung von SUN zum Update 10 zu entnehmen.
Codenamen
- Java 1.4.0 – Merlin
- Java 1.4.1 – Hopper
- Java 1.4.2 – Mantis
- Java 5 – Tiger
- JDK 6 – (früher bekannt als
„Mustang“)
- JDK 7 – (früher bekannt als
„Dolphin“)
Am 15. August 2006 wurde über das Blog des Javaentwicklers Ray Gans (Senior
Program Manager bei Sun Microsystems) bekannt, dass Sun von nun an auf die
Projektnamen verzichtet und nur noch Versionsnummern verwendet.
Lizenz
Am 13. November 2006 gab Sun bekannt, dass bis Ende des zweiten Quartals
2007 die komplette Java-Technologie unter den Lizenzbestimmungen der GPL Version 2 veröffentlicht werden soll. Am 8. Mai 2007 teilte man mit, dass dies für den
Großteil der Technologie geschehen sei.
Ein Problem für Entwickler freier
Software bestand bis November 2006 darin, dass Java zwar kostenlos war,
jedoch nicht die Richtlinien für freie Software erfüllte. Probleme entstanden
in diesem Rahmen vor allem dann, wenn beim Erstellen von Programmen „unfreie“
Klassen von Sun
verwendet wurden, die freie Java-Compiler oder Java-Laufzeitumgebungen
nicht verwenden können. Anwender von freien JVMs sind in diesen Fällen
gezwungen, auf die JVM von Sun zurückzugreifen. In diesem Zusammenhang wurde auch von der
„Java-Falle“ (Java Trap)
gesprochen.
Engagierte Entwickler haben darauf reagiert und eine beachtliche Menge an
freier Software zur Interpretation, Kompilierung und Ausführung von
Java-Programmen entwickelt, wie z. B. GNU Classpath, GNU
Compiler for Java, Kaffe oder Harmony (von der Apache Software Foundation).
Dieser Artikel basiert auf dem Artikel Java (Technik) aus der freien Enzyklopädie Wikipedia und steht unter der GNU Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar, dort kann man den Artikel bearbeiten.


