Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage |
<< | < | > | >> | API | Kapitel 1 - Was ist Java? |
Als offizieller Geburtstag der Programmiersprache Java gilt der 23. Mai 1995 - mit dem Erscheinen dieses Buchs wird Java also stattliche 16 Jahre alt sein.
Nach einer wechselhaften Vorgeschichte, einem großen Hype in den Anfangsjahren und fast ebenso vielen technischen Schwierigkeiten wie Errungenschaften in der Folgezeit hat sich Java mittlerweile vollständig etabliert. Nach wie vor verzeichnet die Sprache ein wachsendes Interesse in breiten Kreisen der Entwicklergemeinschaft und sie hat C und C++ als am häufigsten genutzte Programmiersprache abgelöst. 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.
Einschlägigen Berichten zufolge fing alles mit einer Mail des damals 25-jä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. 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 verfehlte ihre Wirkung nicht. 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 potenziellen 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 PDAs oder Tablet-PCs ähnelte 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 und 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. 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 zukünftiges interaktives Fernsehen und Heimelektronik hatten die Entwickler nämlich eine andere, viel realere Entwicklung übersehen! Mittlerweile hatte nämlich das World Wide Web eine kritische Größe erreicht und 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 Internets 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 gewann noch an Dynamik. 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 aus der Entwicklergemeinde überhäuft. 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 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, standen 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. 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 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ützten Plattformen. Neben vielen Detailverbesserungen und umfangreichen Erweiterungen der Klassenbibliotheken sollte das JDK 1.4 weitere Performance-Verbesserungen bringen. So wurde 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 erlaubten es, den Quellcode von Java-Klassen einfacher und dennoch klarer als zuvor zu schreiben.
In 2006 wurde die Version 6 des JDK unter dem Codenamen Mustang entwickelt. Kurz nach Erscheinen der ersten Betaversion teilte Ray Gans - einer der führenden Java Entwickler bei Sun - in seinem Blog mit, dass Sun in Zukunft auf Codenamen verzichten und stattdessen nur noch die Versionsnummern verwenden wird.
Für viele Java-Programmierer überraschend gab Sun im November 2006 bekannt, dass die komplette Java-Technologie im Laufe des Jahres 2007 Stück für Stück unter die populäre General Public License (GPL) gestellt und damit jedermann zugänglich gemacht werden soll. Java war zwar seit der ersten Version kostenlos und konnte von jedem über die Homepage von Sun heruntergeladen werden. Allerdings war das »Verteilen« des Programms an Auflagen gebunden und der Gedanke, dass Java zwar kostenlos, aber eben nicht frei verfügbar ist, lief 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 waren, wie beispielsweise GNU Classpath oder Apache Harmony.
Die sechste Version von Java wurde am 11. Dezember 2006 veröffentlicht und brachte als Neuerungen eine vollständig überarbeitete und vereinheitlichte Webservice-API, eine komplett in Java geschriebene Datenbank sowie einen JavaScript-Interpreter. Außerdem wurden viele Fehler behoben und Java 6 war nochmals einen »Tick« schneller als die vorangegangenen Versionen.
Im Januar 2010 übernahm Oracle für über 7 Mrd. US-Dollar die Firma SUN und erwarb damit auch die Rechte an Java. James Gosling, einer der Urväter der Sprache und zuletzt CTO bei SUN, verließ daraufhin im April 2010 das Unternehmen und wechselte ein Jahr später zu Google.
Oracle arbeitet seither an der Weiterentwicklung von Java und schafft es langsam, die ersten Zweifel in der Entwicklergemeinde an seinen Bekenntnissen zu der beliebten Sprache auszuräumen. Im Oktober 2010 gab IBM die langjährige Entwicklung seines JDK zu Gunsten einer Zusammenarbeit mit Oracle auf Basis des OpenJDK auf. Andere Firmen folgten, darunter SAP und Apple.
Am 28. Juli 2011 erschien offiziell die Version 7, die nach einer von Mark Reinholds begonnenen Diskussion im Funktionsumfang um die Projekte Lamba (Erweiterung um funktionale Sprachbestandteile), Jigsaw (Modularisierung der Plattform) und einige Teile des Projekts Coin (kleinere Spracherweiterungen) reduziert wurde. Diese Features werden mit Version 8 umgesetzt werden, die voraussichtlich Ende 2012 erscheinen wird.
Erstmals ist mit der Version 7 das unter GPL-Lizenz frei erhältliche OpenJDK die offizielle Standardimplementation des JDK.
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ässt 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.
![]() |
![]() |
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-Versionen 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 offizielle Bezeichnung der aktuellen Java-Version ist also Java Standard Edition 7. Sie besteht aus den Teilen JDK (voller Name Java Development Kit) und JRE (voller Name Java 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 7 sprechen, mitunter aber auch den Begriff JDK verwenden. Wenn nicht anders erwähnt, beziehen sich alle Ausführungen in diesem Buch auf die Standard Edition. |
![]() |
|
![]() |
Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 7. Auflage, Addison Wesley, Version 7.0 |
<< | < | > | >> | API | © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de |