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

## 1.1 Historie

- 1.1 Historie

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

Mit dem Erscheinen dieses Buchs wird Java also fast sieben Jahre alt sein. Nach einer wechselhaften Vorgeschichte, dem darauffolgenden 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 gehen. Er war der Meinung, daß manches bei SUN nicht gut funktionierte, und die weitaus moderneren Technologien von Next reizten ihn sehr. McNealy, mit dem 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, daß 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 Potential 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 Potential 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, daß 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:

- Gamelan ist ein Verzeichnis von Java-Ressourcen, das Verweise auf Java-Applets oder -Applikationen verwaltet. Während die Zahl der Einträge im Januar 1996 noch deutlich unter 1000 lag, sollte sie sich innerhalb der nächsten 6 Monate vervierfachen.
- Eine ähnliche Entwicklung nahmen die Java-Newsgroups im Internet. Während im Januar 1996 lediglich eine einzige Gruppe `comp.lang.java` existierte, gibt es heute 12 weitere Newsgroups innerhalb der `comp.lang.java`-Hierarchie mit insgesamt etwa 15000 Nachrichten pro Monat. Zudem gibt es unzählige nationale Newsgroups, Listserver und nicht-öffentliche Diskussionsforen.
- Ein weiteres Beispiel für die rasante Verbreitung ist die Anzahl der bei SUN offiziell registrierten Java-Usergruppen. Sie lag im Februar 1996 bei 17, stieg bis Ende 1998 auf 140 an und liegt heute bei fast 900. Weitere 2600 befinden sich in Gründung.
- Die Ende 1996 von SUN ins Leben gerufene Java Developer's Connection, die als Download- und Service-Plattform für die Java-Entwicklungswerkzeuge von SUN dient, verzeichnet heute mehrere Millionen registrierte Entwickler.

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 Card 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, daß 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 daß 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, daß 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, zu dem es mittlerweile ein Update 1.3.1_02 gibt. 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 soll das JDK 1.4 weitere Performance-Verbesserungen bringen. Sie werden unter anderem auch das zuvor schlechte Laufzeitverhalten von Swing-Anwendungen auf UNIX-Betriebssystemen beseitigen. Zu den wichtigsten funktionalen Erweiterungen der Version 1.4 zählen die `assert`-Anweisung, XML-Unterstützung, neue Bibliotheken für schnelle I/O-Zugriffe, Benutzer-Voreinstellungen, Logging oder reguläre Ausdrücke sowie viele Erweiterungen bestehender Bibliotheken. Zudem gibt es Unterstützung für Solaris 64-Bit-Systeme und IPv6-Support.

Das Committment 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 entscheidend 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. Zusammenfassend läßt sich feststellen, daß 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. Es gibt heute keinen Grund anzunehmen, daß dieser sich mit dem JDK 1.4 und weiteren Version nicht weiter festigen wird.

|  | Seit der Version 1.2 firmieren alle Java-Versionen unter dem offiziellen Oberbegriff Java 2 Platform. Seit einiger Zeit werden zudem die Entwicklungssysteme von SUN nicht mehr JDK, sondern Java 2 SDK genannt (SDK steht für Software Development Kit). Wir werden in diesem Buch meist vom JDK 1.4 sprechen, wenn die aktuelle Version gemeint ist. Das entspricht weitgehend dem üblichen Sprachgebrauch und harmoniert mit großen Teilen der offiziellen Dokumentation zum JDK. Auf die Unterschiede zwischen den drei unterschiedlichen Java 2-Plattformen, der J2SE (Java 2 Standard Edition), der J2ME (Java 2 Micro Edition) und der J2EE (Java 2 Enterprise Edition), werden wir dagegen nicht weiter eingehen. Wenn nicht anders erwähnt, beziehen sich alle Ausführungen in diesem Buch auf die Standard Edition. Die Micro Edition beschreibt einen eingeschränkten Sprachstandard, mit dem Java auf Geräten wie Mobiltelefonen oder PDAs betrieben werden kann, und die Enterprise Edition enthält eine Reihe zusätzlicher Elemente, die das Entwickeln verteilter, unternehmensweiter Applikationen unterstützen. |  |
Hinweis

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de