Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 5. Auflage
 <<    <     >    >>   API  Kapitel 1 - Was ist Java?

1.1 Historie



Als offizieller Geburtstag der Programmiersprache Java gilt der 23. Mai 1995.

Mit dem Erscheinen dieses Buchs wird Java also stattliche zwölf Jahre alt sein. Nach einer wechselhaften Vorgeschichte, dem darauf folgenden Enthusiasmus und fast ebenso vielen technischen Schwierigkeiten wie Errungenschaften hat sich Java heute vollständig etabliert. Nach wie vor verzeichnet die Sprache ein steigendes Interesse in breiten Kreisen der Entwicklergemeinschaft und wird in Kürze C++ als am häufigsten genutzte Programmiersprache abgelöst haben. Bevor wir uns in den nachfolgenden Kapiteln mit den technischen Details der Sprache beschäftigen, wollen wir einen kurzen Blick auf die Entstehungsgeschichte von Java werfen.

Nach einschlägigen Berichten fing alles mit einer Mail des damals 25jährigen Programmierers Patrick Naughton an den SUN-Chef Scott McNealy an. Naughton hatte angekündigt, das Unternehmen zu verlassen, um zu Next Computer, Inc. zu wechseln. Er war der Meinung, dass manches bei SUN nicht gut funktionierte, und die weitaus moderneren Technologien von Next reizten ihn sehr. McNealy, der mit Naughton zusammen Eishockey spielte, forderte ihn auf, seine Kritik samt möglicher Lösungsvorschläge niederzuschreiben, ganz gleich, wie radikal sie auch sein mögen.

Naughtons Mail hat seine Wirkung nicht verfehlt! In einer für SUN schwierigen Periode mit internen Diskussionen um den Kurs des Unternehmens und seiner Produkte rannte Naughton offene Türen ein. Seine Hauptkritikpunkte betrafen die nicht zeitgemäßen grafischen Oberflächen, die unübersehbare Anzahl an Programmierwerkzeugen, die hohen Kosten der Workstations und die komplizierte Anwendung der Programme. Kurz, er warf SUN vor, auf dem besten Wege zu sein, sich mehr und mehr von seinen potentiellen Kunden und Anwendern zu entfernen. Er forderte Hard- und Software, die nicht nur von Akademikern und hochspezialisierten Profis, sondern von normalen Menschen angewendet werden konnte.

Naughtons Klagen wurden erhört, und innerhalb weniger Tage wurde ein Projekt aufgesetzt, dessen Ziel es sein sollte, die nächsten großen Trends der Computer- und Softwareindustrie aufzuspüren. Naughton zog seine angedrohte Kündigung zurück und begann 1991 zusammen mit James Gosling und Mike Sheridan die Arbeit an einem geheimen, zunächst für ein Jahr finanzierten und außerhalb des regulären Unternehmens angesiedelten Vorhabens, das später den Namen Green-Projekt erhielt.

Nach anfänglichen Schwierigkeiten, seine eigene Aufgabe zu definieren, entschied sich das Team dafür, einen Prototyp zur Steuerung und Integration von Geräten zu bauen, wie sie in normalen Haushalten in großer Zahl verwendet wurden (Toaster, Videorecorder, Fernseher etc.). Bestandteile dieses Projekts waren ein Betriebssystem (Green-OS), ein portabler Interpreter (Oak), ein Grafiksubsystem und diverse Hardwarekomponenten. Bis Mitte 1992 entwickelte Naughton mit seinen Kollegen ein Gerät, das etwa heutigen Palm-Computern glich und mit einer tastaturlosen grafischen Oberfläche per drahtloser Datenübertragung zur Bedienung unterschiedlichster Geräte der Konsumelektronik verwendet werden konnte.

Das als »*7« (Star Seven) bezeichnete Gerät wurde im Herbst 1992 firmenintern präsentiert. Diese Vorstellung konnte einige der Manager - unter ihnen SUN-Mitbegründer Bill Joy und Scott McNealy - so beeindrucken, dass im November 1992 aus dem lockeren Team die Firma First Person, Inc. gegründet wurde. Mit zuletzt etwa 70 Mitarbeitern versuchte das junge Unternehmen, den Prototypen zur Serienreife zu bringen und zu vermarkten. Trotz großer Anstrengungen scheiterten aber alle Versuche, Verträge und Partnerschaften zur kommerziellen Verwendung von Star Seven unter Dach und Fach zu bringen. Nach vielen Mühen wurde die Arbeit von First Person, Inc. im April 1994 praktisch beendet.

Fast wäre die Geschichte von Java nun bereits zu Ende gewesen, ehe sie richtig begonnen hatte.

Bei aller Euphorie über interaktives Fernsehen und Heimelektronik hatten die Entwickler nämlich eine andere, sehr viel realere Entwicklung übersehen. Mittlerweile hatte das World Wide Web eine kritische Größe erreicht! Nachdem NCSA Mosaic als erster grafischer Web-Browser im April 1993 verfügbar war, konnte jedermann ansprechend aufbereitete Informationen im Internet ansehen und auf einfache Weise zwischen unterschiedlichen Diensten, Medien und Anbietern wechseln. Vor allem Bill Joy, der sich gelegentlich über den Stand des Green-Projekts informierte, erkannte das Potenzial des World Wide Web und die Bedeutung einer plattformunabhängigen Programmiersprache, mit der neben textuellen Inhalten auch Programme transportiert und ohne Installations- oder Portierungsaufwand auf einem beliebigen Zielrechner ausgeführt werden konnten.

In der Annahme, damit die Bedeutung des Internet zu stärken und auf diese Weise indirekte Verkaufsförderung für SUN-Produkte zu betreiben, beauftragte Joy die Kollegen Gosling und Naughton mit der Entwicklung einer »Killer-Applikation«, die dieses Potenzial offenlegen sollte. Während *7 dabei keine Rolle mehr spielte, wurde die Programmiersprache Oak zur Entwicklung einer ganz neuen Art von Programm verwendet. Im Herbst 1994 wurde mit ihrer Hilfe die erste Version von WebRunner fertiggestellt, einem Web-Browser, der neben der Darstellung von HTML-Seiten auch kleine Java-Programme, Applets genannt, aus dem World Wide Web laden und innerhalb des Browserfensters ausführen konnte.

Zu diesem Zeitpunkt war Oak, das später in Java umbenannt wurde, bereits eine recht stabile Sprache. Sie wurde nicht nur dazu benutzt, WebRunner zu entwickeln, sondern von Arthur van Hoff, der Ende 1993 zum Team kam, zur Entwicklung des Java-Compilers selbst verwendet. Ende 1994 stand WebRunner einer kleinen Anzahl von Entwicklern zum Test zur Verfügung und konnte nicht nur diese, sondern auch die Verantwortlichen bei SUN überzeugen. Das Programm wurde nach der Umbenennung in HotJava in den nächsten Monaten stabilisiert und konnte im Mai auf der SunWorld '95 der Öffentlichkeit vorgestellt werden.

Trotz des technologischen Durchbruchs und großen Presserummels mochten sich zunächst nur wenige Anwender mit HotJava anfreunden. Der überlegene Netscape Navigator war zu diesem Zeitpunkt bereits zu stark verbreitet. So war es ein großes Glück, dass Netscape sich entschied, die Java-Technologie von SUN zu lizenzieren und in der Version 2.0 des Navigators, die im Dezember 1995 auf den Markt kam, einem breiten Publikum zur Verfügung zu stellen. Die Ankündigung dieser Fortentwicklung, die Netscape-Gründer Marc Andreessen am 23. Mai 1995 zusammen mit der öffentlichen Vorstellung von Java vortrug, wird von SUN als offizielle Geburtsstunde von Java angesehen.

Nach einigen Monaten des Betatests für Java und HotJava wurde im Januar 1996 das JDK 1.0, die erste Version des Java Development Kit, freigegeben. Bereits während der Betatests wurden hunderte von frei verfügbaren Applets geschrieben, die schon früh einen Eindruck von den Möglichkeiten der Sprache vermittelten. Kurz vor der Fertigstellung des JDK 1.0 wurde aus den verbliebenen Mitgliedern des Green-Teams die Firma JavaSoft gegründet, die von SUN mit der Weiterentwicklung von Java betraut wurde. Unter ihrem Präsidenten Alan Baratz entwickelte und pflegte JavaSoft das JDK und seine Werkzeuge und sollte fortan maßgeblich den weiteren Weg von Java bestimmen.

Tatsächlich stand die Entwicklung nun keinesfalls still, sondern nahm an Dynamik noch zu. In den folgenden Monaten bildeten sich eine Reihe von strategischen Allianzen zwischen SUN bzw. JavaSoft und vielen Großen der Branche. So wurde beispielsweise die im Mai 1996 angekündigte Komponentenarchitektur JavaBeans von so prominenten Firmen wie Borland, Lotus, Oracle, IBM, Netscape und Symantec unterstützt.

Im Laufe der nächsten Monate kam der »Hype« dann richtig in Fahrt, und Java wurde mit Lorbeeren überhäuft. In welcher Weise das Interesse an Java anstieg, mögen einige Kennzahlen verdeutlichen:

Nach einer Reihe von Ankündigungen im ersten Halbjahr wurden bis Ende 1996 zahlreiche Neuerungen vorgestellt. Unter ihnen waren die Datenbank-Spezifikation JDBC, die Komponentenarchitektur Beans, das JavaCard API, HotJava Views, die »100 % Pure Java Initiative« und eine Reihe weiterer APIs. Zusätzlich kamen die ersten integrierten Entwicklungssysteme, wie Cafe und Visual Cafe von Symantec oder J++ von Microsoft, auf den Markt.

Im Dezember 1996 wurde die Version 1.1 des Java Development Kit angekündigt. Sie sollte eine Reihe von Bugs der Vorgängerversion beheben und weitere Funktionalitäten hinzufügen. Im Februar 1997 standen die ersten Betaversionen des JDK 1.1 zur Verfügung und konnten von interessierten Entwicklern heruntergeladen werden. Im März 1997 wurde dann HotJava 1.0 herausgegeben (alle vorigen Versionen hatten lediglich Betacharakter), und auch das Java-Betriebssystem JavaOS 1.0 wurde in diesem Monat der Öffentlichkeit vorgestellt.

Etwa zeitgleich konnte man auf der Cebit 1997 den ersten Prototypen der JavaStation, einer diskettenlosen Workstation, die ausschließlich auf Java basierte, bewundern. Mit der Ankündigung von Java-Prozessoren wie dem PicoJava eröffnete SUN die Perspektive, dass Java-Programme mittelfristig ebenso schnell laufen werden wie kompilierter C- oder C++-Code. Das für Java-Entwickler herausragende Ereignis des Jahres war die JavaOne im April 1997, die erste Konferenz, die sich ausschließlich um Java drehte. Sie brachte eine Vielzahl von Ankündigungen, Prototypen und neuen Produkten hervor. Die JavaOne findet seither jedes Frühjahr in San Francisco statt und ist nach wie vor eines der wichtigsten Ereignisse der weltweiten Java-Gemeinde.

Die folgenden Monate standen für viele Entwickler und Tool-Hersteller im Zeichen der Umstellung auf die Version 1.1 des JDK. Zwar gab es bereits Ende 1997 mehr als ein Dutzend integrierte Entwicklungsumgebungen, doch Support für die Version 1.1 war längst nicht überall vorhanden. Auch die Browser-Hersteller taten sich schwer und stellten erst zum Jahreswechsel 1997/98 mit den 4er Versionen ihrer Browser erste Implementierungen des JDK 1.1 vor. Bis diese einigermaßen stabil waren, vergingen weitere Monate.

Während sich 1998 die meisten Entwickler mit der Version 1.1 beschäftigten, wurde bei SUN bereits am neuen JDK 1.2 gearbeitet. Im Frühjahr 1998 stand dessen erste öffentliche Version, das JDK 1.2 Beta 2, der Öffentlichkeit zur Verfügung. Wichtige Neuerungen waren die Java Foundation Classes mit dem Swing Toolset, dem Java 2D API und dem Drag-and-Drop API, das Collection-API und das Extension Framework. Daneben gab es viele weitere Verbesserungen bestehender Pakete. Nach zwei weiteren Betas, die bis zum Juli erschienen, brachte SUN im Oktober und November die »Release Candidates« 1 und 2 heraus. Anfang Dezember 1998 wurde dann schließlich die erste finale Version des JDK 1.2 zur Verfügung gestellt und im Januar 1999 in Java 2 Platform umbenannt.

Mit der Version 1.2 hatte sich der Anspruch SUNs an das JDK geändert. Während es zuvor darum ging, möglichst viele Features in das JDK einzubauen, stand seit dem JDK 1.2 offiziell die Stabilität und Performance im Vordergrund. Ersteres sollte mit einem rigorosen Qualitätssicherungsprogramm erreicht werden, letzteres durch Verbesserung der virtuellen Maschine. Im März 1999 wurde der lange angekündigte HotSpot-Compiler ausgeliefert. Zwar brachte er mit seiner adaptiven Compilertechnologie, bei der interpretierte Programmteile zur Ausführungszeit genau dann in direkt ausführbaren Maschinencode übersetzt werden, wenn sie wesentlich zur Laufzeit des Programms beitragen, für einige Anwendungen Geschwindigkeitsvorteile. In vielen Fällen reichte den Entwicklern und Anwendern die Performance der Java-Programme jedoch nicht aus. Insbesondere das Swing-Toolkit, die neue Grafikplattform, galt auf durchschnittlichen Arbeitsplätzen als zu träge und trug sehr zu dem Ruf Javas bei, für »echte« Anwendungen zu langsam zu sein.

Zudem wurde das JDK 1.2 nur zögernd von der Industrie angenommen. Zwar gab es auf dem PC bald 1.2-kompatible Entwicklungswerkzeuge, doch auf anderen Betriebssystemen (Macintosh, UNIX, LINUX) blieben die Portierungen bei den 1.1er Versionen stehen. Die großen Browser-Hersteller haben bis heute keine brauchbaren 1.2er Java-Implementierungen vorgestellt. Dies mag einerseits durch technische Schwierigkeiten begründet gewesen sein, lag aber auch an der damals kaum akzeptierten Community Source Licence von SUN. Mit dieser sollte ein offener Java-Standard etabliert werden, ohne dass SUN die Kontrolle über die Weiterentwicklung von Java verlor. Durch diese Vereinbarung waren Unternehmen, die Weiterentwicklungen des JDK vornahmen, unter Umständen dazu verpflichtet, diese offenzulegen bzw. unentgeltlich an SUN zu übergeben.

Nach den fehlerbereinigten Versionen 1.2.1 und 1.2.2 des JDK betrieb SUN die Weiterentwicklung des JDK unter dem Codenamen Kestrel. Mit einem neuen Garbage Collector, verbessertem Speichermanagement und einem neuen HotSpot-Compiler sollte diese Version stabiler und performanter werden als alle vorherigen. Viele kleine Verbesserungen sollten zudem bei der Swing-Oberfläche deutliche Geschwindigkeitsgewinne bringen. Die intensive Arbeit an dieser Version äußerte sich auch darin, dass alle Bugfixes des JDK 1.2.2 auf die neue Version verschoben wurden.

Im August 1999 gab es dann die erste öffentliche Betaversion des JDK 1.3. Tatsächlich schienen sich die Versprechen zu erfüllen. Bereits das Beta lief recht stabil und brachte bei der grafischen Oberfläche deutliche Geschwindigkeitsgewinne. Durch eine geänderte Initialisierung der virtuellen Maschine reduzierte sich die Startzeit von Java-Applikationen deutlich, und mit dem neuentwickelten Compiler gab es große Verbesserungen bei den Turnaround-Zeiten. Auch subjektiv lieferte das JDK 1.3 den Eindruck erheblich besserer Performance. Nach drei weiteren Vorabversionen wurde im Mai 2000 die endgültige Version des JDK 1.3 für Windows ausgeliefert. Versionen für andere Betriebssysteme (namentlich SOLARIS und LINUX) sollten etwa drei Monate später folgen. Selbst Apple, dessen Java-Implementierungen lange Zeit bei der Version 1.1 stehen geblieben waren, liefert mit dem Mac OS X mittlerweile ein aktuelles JDK als integralen Bestandteil des Betriebssystems aus.

2001 folgte dann das Bug-Fix-Release 1.3.1, und nach einigen Betas und einem »Release Candidate« brachte SUN Mitte Februar 2002 schließlich das JDK 1.4 heraus - diesmal zeitgleich für alle unterstützen Plattformen. Neben vielen Detailverbesserungen und umfangreichen Erweiterungen der Klassenbibliotheken sollte das JDK 1.4 weitere Performance-Verbesserungen bringen. So wurden unter anderem das zuvor schlechte Laufzeitverhalten von Swing-Anwendungen auf UNIX-Betriebssystemen beseitigt. Zu den wichtigsten funktionalen Erweiterungen der Version 1.4 zählten die assert-Anweisung, Unterstützung für XML, neue Bibliotheken für schnelle I/O-Zugriffe, Benutzer-Voreinstellungen, Logging oder reguläre Ausdrücke sowie viele Erweiterungen bestehender Bibliotheken. Zudem gab es Unterstützung für Solaris 64-Bit-Systeme und IPv6-Support. Die folgende Java 5 Version brachte neue Sprachkonstrukte wie typisierte Klassen, eine neue for-Schleife und das Autoboxing von Basistypen. Sie erlauben es, den Quellcode von Javaklassen einfacher und dennoch klarer zu schreiben und können dazu beitragen, beispielsweise falsche Casts zu vermeiden.

Den derzeitigen Höhepunkt der Java-Entwicklung bildet die aktuelle Java-Version 6, die ursprünglich unter dem Codenamen Mustang entwickelt wurde. Kurz nach Erscheinen der ersten Betaversion teilte Ray Gans - einer der führenden Java Entwickler bei Sun - in seinem Blog unter http://weblogs.java.net/blog/ray_gans/ jedoch mit, dass Sun in Zukunft auf Codenamen verzichten und stattdessen nur noch die Versionsnummern verwenden wird.

Der große Knall wurde jedoch erst kurz vor dem Release des JDK 6 publik gemacht: Am 13. November 2006 gab Sun bekannt, dass im Laufe des Jahres 2007 die komplette Java-Technologie Stück für Stück unter die populäre General Public License (GPL) gestellt und damit jedermann zugänglich gemacht werden soll. Java ist zwar seit der ersten Version kostenlos und kann von jedem über die Homepage von Sun heruntergeladen werden, allerdings war das »Verteilen« des Programms an Auflagen gebunden. Außerdem lief der Gedanke, dass Java zwar kostenlos aber eben nicht frei verfügbar ist, der Intention vieler Open Source Projekte, Linux-Distributionen und Anbietern von Java-Anwendungen zuwider, so dass im Laufe der Jahre eine stattliche Anzahl von freien Java-Implementierungen entstanden. Zu den bedeutendsten »Nachimplementierungen« zählen:

Mehr Informationen zum Thema Java und Open Source finden sich zum Beispiel unter http://www.sun.com/software/opensource/java/faq.jsp.

Die sechste Version von Java wurde am 11. Dezember 2006 veröffentlicht und enthält eine vollständig überarbeitete und vereinheitlichte Webservice-API, eine komplett in Java geschriebene Datenbank und einen JavaScript-Interpreter. Außerdem wurde viele Fehler behoben und Java 6 ist nochmals einen »Tick« schneller als die vorangegangenen Versionen.

Das Engagement der Softwareentwickler zu den aktuellen Java-Versionen ist beträchtlich. Neben vielen Partnerschaften, bei denen Spezialisten aus der ganzen Welt durch die Mitarbeit im Java Community Process (JCP) zu den Neuerungen und Erweiterungen der aktuellen Versionen beigetragen haben, gibt es mittlerweile auch eine große Zahl an Applikationen, die in Java geschrieben wurden oder bei deren Entwicklung Java eine wichtige Rolle gespielt hat. Auch bei der Entwicklung von Server-Applikationen und Web-Services spielt Java mittlerweile in der ersten Liga. So läßt sich feststellen, dass Java nach der ersten (Applet-)Euphorie der Versionen 1.0 und 1.1 und einer dezenten Zurückhaltung während der 1.2er Versionen mit dem JDK 1.3 auch bei den meisten Skeptikern den Durchbruch geschafft hat. Dieser hat sich mit den JDKs 1.4 und 5 gefestigt und wird - aller Voraussicht nach - auch in den kommenden Versionen weiter anhalten.

Zwischen den Versionen 1.2 und 1.4 firmierten alle Java-Versionen unter dem offiziellen Oberbegriff Java 2 Platform - im Unterschied zu der zwar niemals explizit so bezeichneten, aber doch wohl gemeinten »Java 1 Platform«, die aus den Versionen 1.0 und 1.1 bestand. Parallel dazu wurden die Entwicklungssysteme dann nicht mehr JDK, sondern Java 2 SDK genannt (SDK steht für Software Development Kit). Mit dem folgenden Release wurde bezüglich der Namensgebung erneut eine kleine Kurskorrektur vorgenommen. Einerseits wurde die Versionsnummer 1.5 während der Betaphase auf 5.0 erhöht (um - laut SUN-Website - das hohe Maß an Reife, Stabilität, Sicherheit und Skalierbarkeit der aktuellen Version zu dokumentieren). Andererseits wurde der Begriff JDK rehabilitiert und darf nun auch »offiziell« wieder verwendet werden (Begründung: »...due to significant popularity within the Java developer community...«).

Seit der fünften Version setzt sich die - aus Sicht des Marketings besser verwendbare - ganzzahlige Namenskonvention durch, bei der neue Java-Version mit der nachfolgenden natürlichen Zahl gekennzeichnet werden, während die »Zwischenversionen« kleineren Verbesserungen und Bugfixes vorbehalten bleiben. Dieses Schema wurde in alle Java-Editionen übernommen, die sich vor allem in Art und Umfang der enthaltenen Bibliotheken unterscheiden. Ein Java-Entwickler kann sich zwischen diesen Auslieferungen entscheiden:

  • Die Java 6 Standard Edition, von der in diesem Buch die Rede sein wird.
  • Die Java 5 Enterprise Edition, mit der verteilte, unternehmensweite Business-Applikationen entwickelt werden können. Die sechste Generation der Enterprise Edition ist für das dritte Quartal 2008 geplant.
  • Die Java Micro Edition, für kleine Geräte wie Mobiltelefone und PDAs.
  • Die Java Card Edition bringt Java schließlich auf Kreditkarten-großen Smartcards unter.

Die offizielle Bezeichnung der aktuellen Java-Version ist also Java 6 Standard Edition. Sie besteht aus den Teilen JDK (voller Name Java 6 Development Kit und JRE (voller Name Java 6 Runtime Environment). Während das JDK alle Werkzeuge zum Entwickeln von Java-Programmen enthält, bezeichnet das JRE die Laufzeitumgebung (oder Virtuelle Maschine) um Java-Programme auszuführen. Wir werden meist von Java 6 oder der Java 6 Edition sprechen (weibliche Form (!)), insbesondere wenn die aktuelle Version gemeint ist, mitunter aber auch den Begriff JDK verwenden. Wenn nicht anders erwähnt, beziehen sich alle Ausführungen in diesem Buch auf die Standard Edition.

 Hinweis 


 Titel   Inhalt   Suchen   Index   DOC  Handbuch der Java-Programmierung, 5. Auflage, Addison Wesley, Version 5.0.1
 <<    <     >    >>   API  © 1998, 2007 Guido Krüger & Thomas Stark, http://www.javabuch.de