Geschichte

Die Geschichte der Java-Programmiersprache und der Java-Plattform

Der Ursprung

Java wurde 1991 von James Gosling unter dem Namen Oak (Eiche) in einem Projekt zur Steuerung von Haushaltsgeräten, dem Green Project der Firma Sun Microsystems entwickelt. Es gab einen auf Oak basierenden Minicomputer namens *7 (Star Seven), der den Sun-Chef Scott McNealy bei einer hausinternen Vorführung so beeindruckte, daß eine eigene Firma für die Vermarktung gegründet wurde. Die Produkte kamen jedoch niemals zur Marktreife, sonden 1995 wurden die brauchbaren Teile des Projektes herausgezogen und Oak erschien unter dem Namen Java (Slang für Kaffee, deshalb auch die dampfende Tasse als Logo) in der Version 1.0 als hardwareunabhängige Programmiersprache mit dem Versprechen "Write Once Run Everywhere" (Einmal schreiben, überall ausführen), weches bis heute zu einer sehr weiten Verbreitung der Spache besonders im Unternehmenseinsatz geführt hat.

Die Sprache selbst

Java ist eine syntaktisch an C/C++ angelehnte, objektorientierte Sprache, die in einer Virtuellen Maschine (Virtual Machine, VM), sozusagen einem in Software gebauten Computer, läuft und somit auf jeder Hardwareplattform und unter jedem Betriebssystem, für welche eine solche virtuelle Maschine existiert. Der Vorteil der überwachten Ausführung in einer solchen VM war von Anfang an neben der Hardwareunabhängigkeit der hohe Sicherheitsstandard der Sprache, welcher sie für unternehmenskritische Anwendungen prädestinierte. Der Nachteil war die im Vergleich zu nativen, in C oder C++ geschriebenen Programmen sehr langsame Ausführung. Die ersten VMs basierten noch auf Interpretern, die den vom Java-Compiler erzeugten Byte-Code, eine Art virtueller Maschinensprache, erst zur Laufzeit des Programmes übersetzten und das immer und immer wieder. Erst mit der Einführung von JIT (Just In Time - Genau zum richtigen Zeitpunkt) Compilern in der VM, die den Code zur Laufzeit in die Maschinensprache der zugrundeliegenden Plattform übersetzten wurde Java von der Geschwindigkeit her konkurrenzfähig und hat mit den hochoptimierenden Hotspot-Compilern in den neuesten Versionen der Plattform eine Ausführungsgeschwindigkeit erreicht, die sich in allen relevanten Bereichen praktisch nicht mehr von nativen Programmen unterscheidet und diese in einigen bereichen sogar übertrift, wie z.B. bei der Objekterzeugung.

Sprache und Plattform

Im Java-Umfeld muß man zwischen der Sprache an sich und der Plattform unterscheiden, welche aus der Sprache, den mitgelieferten Entwicklungswerkzeugen, den Klassenbibliotheken und der Laufzeitumgebung besteht. Die Sprache selbst hat sich seit der Version 1.0 nur wenig verändert, während die Plattform 2 grundlegende Überarbeitungen erfahren hat. Mit der Version 1.2 (Java 2) wurde aus der rein interpretierten Sprache eine Just in Time compilierte und mit der Version 1.5 (Java 5) kamen Generics, ähnlich den Templates in C++, Annotations, also Metadaten im Code selbst und andere moderne Konstrukte zur Sprache hinzu.

Die Spezifikation der Sprache und auch der Plattform geschieht im sogenanten Java Community Process (JCP) mithilfe sogannter JSRs (Java Specification Requests). Im JCP sind fast alle großen Software-Firmen vertreten, aber auch bekannte Größen aus der Open Source Welt. Die neue Java Persistence API(JPA) wurde z.B. in enger Zusammenarbeit mit den Hibernate-Entwicklern spezifiziert.

Zusätzlich zu den quasi eingebauten Plattform-APIs gibt es eine wachsende Anzahl dynamischer Programmiersprachen, welche auf die Java-Plattform umgesetzt, also in der JVM lauffähig sind, oder direkt dafür entwickelt werden. In die erste Kategorie fallen Jython, JRuby und Rhino, während Groovy z.B. direkt als dynamische Sprache für die Java.Plattform entwickelt wird und mit dem GRAILS Framework einen recht hohen Bekanntheitsgrad erreicht hat.

Standard Edition (SE) und Enterprise Edition (EE)

Um die Versionsvielfalt abzurunden, gibt es noch zwei grundlegende Spielarten der Java-Plattform. Zum einen die allgemeine Standard-Edition, die mehr auf alleinstehende Anwendungen ausgerichtet ist, mit der man jedoch grundsätzlich auch vernetzte und verteile Anwendungen schreiben kann, sowie die genau auf letzteres ausgerichtete Enterprise-Edition, die soeben in einer völlig neuen Version allgemein verfügbar geworden ist. Die von vielen Seiten kritisierte Kompliziertheit der J2EE (Java 2 Enterprise Edition mit ihren teils umständlichen und wenig übersichtlichen Konstrukten und Lösungen wurde durch die Java EE 5 abgelöst, die den Entwicklern mit einem stark vereinfachten Programmiermodell und der intensiven Nutzung von Annotations auch im neuen Persistenzmodell das Leben vereinfachen will. Für einen Einsteiger ist der größte Unterschied zwischen den beiden Versionen, daß Java EE Appliklationen in einem Application-Server (Anwendungsserver) laufen, der verschiedene Aspekte, wie z.B. das Datenbankpooling zentral verwaltet, während Java SE Applikationen einen solchen nicht erfordern.

Aktueller Stand und Ausblick

Sun Microsystems hat Ende 2006, kurz nach Freigabe der Java 6 Plattform, damit begonnen, den bisher proprietären Sourcecode der Java-Plattform zu veröffentlichen und unter eine freie Lizenz, die GPL, zu stellen. Java 7 wird als Open Source Projekt entwickelt und nicht zuletzt durch die Freigabe unter der GPL wird es vereinfacht, die ständig wachsende Zahl von Programmiersprachen, die an die Java-Laufzeitumgebung angepaßt wurden, zu vergrößern. Im Moment gibt es mit JRuby (Ruby), Jython (Python), Rhino (JavaScript) und Groovy (eine Art Scriptsprache mit Java-Syntax und voller Kompatibilität zu den Java Klassenbibliotheken) - um nur die bekanntesten zu nennen - leistungsfähige Implementierungen unterschiedlicher Programmiersprachen, die direkt in Bytecode für die Java-VM übersetzt werden und von deren Verbreitung profitieren und im Gegenzug den existierenden Quellcode dieser Sprachen und ihre jeweiligen spezifischen Fähigkeiten auch der Java-Plattform zur Verfühung stellen. Die Gegenwart der Java-Plattform ist schon sehr gut. Noch vielversprechender ist allerdings die Zukunft, die durch die Freigabe des Quellcodes vermutlich viele Überraschungen und überraschende Entwicklungen bereithält.

Share/Save