summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100009.html
blob: 01e645e216498074b46d300a738c6e987f02ae7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
<html>
<head>
<title>
Handbuch der Java-Programmierung, 5. Auflage
</title>
</head>
<body>
<a name="startofbody"></a>
<script language="JavaScript" src="hjp4lib.js">
</script>
<script language="JavaScript">
installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100008.html;106,k100008.html;107,k100010.html;108,k100013.html");
</script>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100008.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100008.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100010.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100013.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">Kapitel 1 - Was ist Java?
</table>
<hr>


<!-- Section -->
<a name="sectlevel2id001001"></a>
<h2>1.1 Historie </h2>
<hr>
<ul>
<li><a href="k100009.html#sectlevel2id001001">1.1 Historie</a>
</ul>
<hr>

<p>
Als offizieller Geburtstag der Programmiersprache Java gilt der 23.
Mai 1995. 

<p>
Mit dem Erscheinen dieses Buchs wird Java also stattliche zw&ouml;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&auml;ndig etabliert.
Nach wie vor verzeichnet die Sprache ein steigendes Interesse in breiten
Kreisen der Entwicklergemeinschaft und wird in K&uuml;rze C++ als
am h&auml;ufigsten genutzte Programmiersprache abgel&ouml;st haben.
Bevor wir uns in den nachfolgenden Kapiteln mit den technischen Details
der Sprache besch&auml;ftigen, wollen wir einen kurzen Blick auf die
Entstehungsgeschichte von Java werfen. 

<p>
Nach einschl&auml;gigen Berichten fing alles mit einer Mail des damals
25j&auml;hrigen Programmierers Patrick Naughton<a name="ixa100001"></a>
an den SUN-Chef Scott McNealy<a name="ixa100002"></a> an. Naughton
hatte angek&uuml;ndigt, das Unternehmen zu verlassen, um zu <i>Next
Computer, Inc.</i> 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&ouml;glicher L&ouml;sungsvorschl&auml;ge
niederzuschreiben, ganz gleich, wie radikal sie auch sein m&ouml;gen.

<p>
Naughtons Mail hat seine Wirkung nicht verfehlt! In einer f&uuml;r
SUN schwierigen Periode mit internen Diskussionen um den Kurs des
Unternehmens und seiner Produkte rannte Naughton offene T&uuml;ren
ein. Seine Hauptkritikpunkte betrafen die nicht zeitgem&auml;&szlig;en
grafischen Oberfl&auml;chen, die un&uuml;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. 

<p>
Naughtons Klagen wurden erh&ouml;rt, und innerhalb weniger Tage wurde
ein Projekt aufgesetzt, dessen Ziel es sein sollte, die n&auml;chsten
gro&szlig;en Trends der Computer- und Softwareindustrie aufzusp&uuml;ren.
Naughton zog seine angedrohte K&uuml;ndigung zur&uuml;ck und begann
1991 zusammen mit James Gosling <a name="ixa100003"></a> und Mike
Sheridan<a name="ixa100004"></a> die Arbeit an einem geheimen, zun&auml;chst
f&uuml;r ein Jahr finanzierten und au&szlig;erhalb des regul&auml;ren
Unternehmens angesiedelten Vorhabens, das sp&auml;ter den Namen <a name="ixa100005"><i>Green-Projekt</i></a>
erhielt. 

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

<p>
Das als &#187;*7&#171; (<a name="ixa100008"><i>Star Seven</i></a>)
bezeichnete Ger&auml;t wurde im Herbst 1992 firmenintern pr&auml;sentiert.
Diese Vorstellung konnte einige der Manager - unter ihnen SUN-Mitbegr&uuml;nder
Bill Joy<a name="ixa100009"></a> und Scott McNealy - so beeindrucken,
dass im November 1992 aus dem lockeren Team die Firma <a name="ixa100010"><i>First Person,
Inc.</i></a> gegr&uuml;ndet wurde. Mit zuletzt
etwa 70 Mitarbeitern versuchte das junge Unternehmen, den Prototypen
zur Serienreife zu bringen und zu vermarkten. Trotz gro&szlig;er Anstrengungen
scheiterten aber alle Versuche, Vertr&auml;ge und Partnerschaften
zur kommerziellen Verwendung von Star Seven unter Dach und Fach zu
bringen. Nach vielen M&uuml;hen wurde die Arbeit von <i>First Person,
Inc.</i> im April 1994 praktisch beendet. 

<p>
Fast w&auml;re die Geschichte von Java nun bereits zu Ende gewesen,
ehe sie richtig begonnen hatte. 

<p>
Bei aller Euphorie &uuml;ber interaktives Fernsehen und Heimelektronik
hatten die Entwickler n&auml;mlich eine andere, sehr viel realere
Entwicklung &uuml;bersehen. Mittlerweile hatte das World Wide Web
eine kritische Gr&ouml;&szlig;e erreicht! Nachdem <a name="ixa100011">NCSA Mosaic</a>
als erster grafischer Web-Browser im April 1993 verf&uuml;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
&uuml;ber den Stand des Green-Projekts informierte, erkannte das Potenzial
des World Wide Web und die Bedeutung einer plattformunabh&auml;ngigen
Programmiersprache, mit der neben textuellen Inhalten auch Programme
transportiert und ohne Installations- oder Portierungsaufwand auf
einem beliebigen Zielrechner ausgef&uuml;hrt werden konnten. 

<p>
In der Annahme, damit die Bedeutung des Internet zu st&auml;rken und
auf diese Weise indirekte Verkaufsf&ouml;rderung f&uuml;r SUN-Produkte
zu betreiben, beauftragte Joy die Kollegen Gosling und Naughton mit
der Entwicklung einer &#187;Killer-Applikation&#171;, die dieses Potenzial
offenlegen sollte. W&auml;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 <a name="ixa100012"><i>WebRunner</i></a> fertiggestellt,
einem Web-Browser, der neben der Darstellung von HTML-Seiten auch
kleine Java-Programme, <i>Applets</i> genannt, aus dem World Wide
Web laden und innerhalb des Browserfensters ausf&uuml;hren konnte.

<p>
Zu diesem Zeitpunkt war Oak, das sp&auml;ter in Java umbenannt wurde,
bereits eine recht stabile Sprache. Sie wurde nicht nur dazu benutzt,
WebRunner zu entwickeln, sondern von Arthur van Hoff<a name="ixa100013"></a>,
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&uuml;gung und konnte nicht nur diese, sondern auch
die Verantwortlichen bei SUN &uuml;berzeugen. Das Programm wurde nach
der Umbenennung in <a name="ixa100014"><i>HotJava</i></a> in den n&auml;chsten
Monaten stabilisiert und konnte im Mai auf der <a name="ixa100015"><i>SunWorld '95</i></a>
der &Ouml;ffentlichkeit vorgestellt werden. 

<p>
Trotz des technologischen Durchbruchs und gro&szlig;en Presserummels
mochten sich zun&auml;chst nur wenige Anwender mit HotJava anfreunden.
Der &uuml;berlegene Netscape Navigator war zu diesem Zeitpunkt bereits
zu stark verbreitet. So war es ein gro&szlig;es Gl&uuml;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&uuml;gung zu stellen. Die Ank&uuml;ndigung
dieser Fortentwicklung, die Netscape-Gr&uuml;nder Marc Andreessen<a name="ixa100016"></a>
am 23. Mai 1995 zusammen mit der &ouml;ffentlichen Vorstellung von
Java vortrug, wird von SUN als offizielle Geburtsstunde von Java angesehen.

<p>
Nach einigen Monaten des Betatests f&uuml;r Java und HotJava wurde
im Januar 1996 das <i>JDK 1.0</i><a name="ixa100017"></a>, die erste
Version des <a name="ixa100018"><i>Java Development Kit</i></a>, freigegeben.
Bereits w&auml;hrend der Betatests wurden hunderte von frei verf&uuml;gbaren
Applets geschrieben, die schon fr&uuml;h einen Eindruck von den M&ouml;glichkeiten
der Sprache vermittelten. Kurz vor der Fertigstellung des JDK 1.0
wurde aus den verbliebenen Mitgliedern des Green-Teams die Firma <a name="ixa100019"><i>JavaSoft</i></a>
gegr&uuml;ndet, die von SUN mit der Weiterentwicklung von Java betraut
wurde. Unter ihrem Pr&auml;sidenten Alan Baratz<a name="ixa100020"></a>
entwickelte und pflegte JavaSoft das JDK und seine Werkzeuge und sollte
fortan ma&szlig;geblich den weiteren Weg von Java bestimmen. 

<p>
Tats&auml;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&szlig;en der Branche. So wurde beispielsweise die im Mai 1996
angek&uuml;ndigte Komponentenarchitektur <a name="ixa100021"><i>JavaBeans</i></a>
von so prominenten Firmen wie <a name="ixa100022">Borland</a>, <a name="ixa100023">Lotus</a>,
<a name="ixa100024">Oracle</a>, <a name="ixa100025">IBM</a>, <a name="ixa100026">Netscape</a>
und <a name="ixa100027">Symantec</a> unterst&uuml;tzt. 

<p>
Im Laufe der n&auml;chsten Monate kam der &#187;Hype&#171; dann richtig
in Fahrt, und Java wurde mit Lorbeeren &uuml;berh&auml;uft. In welcher
Weise das Interesse an Java anstieg, m&ouml;gen einige Kennzahlen
verdeutlichen: 
<ul>
<li><a name="ixa100028">Gamelan</a> ist ein Verzeichnis von Java-Ressourcen,
das Verweise auf Java-Applets oder -Applikationen verwaltet. W&auml;hrend
die Zahl der Eintr&auml;ge im Januar 1996 noch deutlich unter 1000
lag, sollte sie sich innerhalb der n&auml;chsten 6 Monate vervierfachen.
<li>Eine &auml;hnliche Entwicklung nahmen die Java-Newsgroups im Internet.
W&auml;hrend im Januar 1996 lediglich eine einzige Gruppe <font color="#000077"><tt>comp.lang.java</tt></font>
existierte, gibt es heute 12 weitere Newsgroups innerhalb der <font color="#000077"><tt>comp.lang.java</tt></font>-Hierarchie
mit insgesamt etwa 15.000 Nachrichten pro Monat. Zudem gibt es unz&auml;hlige
nationale Newsgroups, Listserver und nicht-&ouml;ffentliche Diskussionsforen.
<li>Ein weiteres Beispiel f&uuml;r die rasante Verbreitung ist die
Anzahl der bei SUN offiziell registrierten <a name="ixa100029">Java-Usergruppen</a>.
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&uuml;ndung.
<li>Die Ende 1996 von SUN ins Leben gerufene <a name="ixa100030"><i>Java Developer's Connection</i></a>,
die als Download- und Service-Plattform f&uuml;r die Java-Entwicklungswerkzeuge
von SUN dient, verzeichnet heute mehrere Millionen registrierte Entwickler.
</ul>

<p>
Nach einer Reihe von Ank&uuml;ndigungen im ersten Halbjahr wurden
bis Ende 1996 zahlreiche Neuerungen vorgestellt. Unter ihnen waren
die Datenbank-Spezifikation <a name="ixa100031">JDBC</a>, die Komponentenarchitektur
Beans, das <a name="ixa100032">JavaCard API</a>, <a name="ixa100033">HotJava Views</a>,
die &#187;<a name="ixa100034">100 % Pure Java Initiative</a>&#171;
und eine Reihe weiterer APIs. Zus&auml;tzlich kamen die ersten integrierten
Entwicklungssysteme, wie <a name="ixa100035"><i>Cafe</i></a> und <a name="ixa100036"><i>Visual
Cafe</i></a> von Symantec oder <a name="ixa100037"><i>J++</i></a>
von Microsoft, auf den Markt. 

<p>
Im Dezember 1996 wurde die Version 1.1 des Java Development Kit angek&uuml;ndigt.
Sie sollte eine Reihe von Bugs der Vorg&auml;ngerversion beheben und
weitere Funktionalit&auml;ten hinzuf&uuml;gen. Im Februar 1997 standen
die ersten Betaversionen des JDK 1.1 zur Verf&uuml;gung und konnten
von interessierten Entwicklern heruntergeladen werden. Im M&auml;rz
1997 wurde dann HotJava 1.0 herausgegeben (alle vorigen Versionen
hatten lediglich Betacharakter), und auch das Java-Betriebssystem
<a name="ixa100038"><i>JavaOS 1.0</i></a> wurde in diesem Monat der
&Ouml;ffentlichkeit vorgestellt. 

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

<p>
Die folgenden Monate standen f&uuml;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&uuml;r die Version 1.1 war l&auml;ngst nicht &uuml;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&szlig;en
stabil waren, vergingen weitere Monate. 

<p>
W&auml;hrend sich 1998 die meisten Entwickler mit der Version 1.1
besch&auml;ftigten, wurde bei SUN bereits am neuen JDK 1.2 gearbeitet.
Im Fr&uuml;hjahr 1998 stand dessen erste &ouml;ffentliche Version,
das JDK 1.2 Beta 2, der &Ouml;ffentlichkeit zur Verf&uuml;gung. Wichtige
Neuerungen waren die <a name="ixa100042"><i>Java Foundation Classes</i></a>
mit dem <a name="ixa100043"><i>Swing Toolset</i></a>, dem <a name="ixa100044"><i>Java 2D
API</i></a> und dem <a name="ixa100045"><i>Drag-and-Drop API</i></a>,
das <a name="ixa100046"><i>Collection-API</i></a> und das <a name="ixa100047"><i>Extension
Framework</i></a>. Daneben gab es viele weitere
Verbesserungen bestehender Pakete. Nach zwei weiteren Betas, die bis
zum Juli erschienen, brachte SUN im Oktober und November die &#187;Release
Candidates&#171; 1 und 2 heraus. Anfang Dezember 1998 wurde dann schlie&szlig;lich
die erste finale Version des JDK 1.2 zur Verf&uuml;gung gestellt und
im Januar 1999 in <a name="ixa100048"><i>Java 2 Platform</i></a> umbenannt.

<p>
Mit der Version 1.2 hatte sich der Anspruch SUNs an das JDK ge&auml;ndert.
W&auml;hrend es zuvor darum ging, m&ouml;glichst viele Features in
das JDK einzubauen, stand seit dem JDK 1.2 offiziell die Stabilit&auml;t
und Performance im Vordergrund. Ersteres sollte mit einem rigorosen
Qualit&auml;tssicherungsprogramm erreicht werden, letzteres durch
Verbesserung der virtuellen Maschine. Im M&auml;rz 1999 wurde der
lange angek&uuml;ndigte <a name="ixa100049"><i>HotSpot</i></a>-Compiler
ausgeliefert. Zwar brachte er mit seiner adaptiven Compilertechnologie,
bei der interpretierte Programmteile zur Ausf&uuml;hrungszeit genau
dann in direkt ausf&uuml;hrbaren Maschinencode &uuml;bersetzt werden,
wenn sie wesentlich zur Laufzeit des Programms beitragen, f&uuml;r
einige Anwendungen Geschwindigkeitsvorteile. In vielen F&auml;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&auml;tzen als zu tr&auml;ge
und trug sehr zu dem Ruf Javas bei, f&uuml;r &#187;echte&#171; Anwendungen
zu langsam zu sein. 

<p>
Zudem wurde das JDK 1.2 nur z&ouml;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&szlig;en
Browser-Hersteller haben bis heute keine brauchbaren 1.2er Java-Implementierungen
vorgestellt. Dies mag einerseits durch technische Schwierigkeiten
begr&uuml;ndet gewesen sein, lag aber auch an der damals kaum akzeptierten
<a name="ixa100050"><i>Community Source Licence</i></a> von SUN. Mit
dieser sollte ein offener Java-Standard etabliert werden, ohne dass
SUN die Kontrolle &uuml;ber die Weiterentwicklung von Java verlor.
Durch diese Vereinbarung waren Unternehmen, die Weiterentwicklungen
des JDK vornahmen, unter Umst&auml;nden dazu verpflichtet, diese offenzulegen
bzw. unentgeltlich an SUN zu &uuml;bergeben. 

<p>
Nach den fehlerbereinigten Versionen 1.2.1 und 1.2.2 des JDK betrieb
SUN die Weiterentwicklung des JDK unter dem Codenamen <a name="ixa100051"><i>Kestrel</i></a>.
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&auml;che deutliche Geschwindigkeitsgewinne
bringen. Die intensive Arbeit an dieser Version &auml;u&szlig;erte
sich auch darin, dass alle Bugfixes des JDK 1.2.2 auf die neue Version
verschoben wurden. 

<p>
Im August 1999 gab es dann die erste &ouml;ffentliche Betaversion
des JDK 1.3. Tats&auml;chlich schienen sich die Versprechen zu erf&uuml;llen.
Bereits das Beta lief recht stabil und brachte bei der grafischen
Oberfl&auml;che deutliche Geschwindigkeitsgewinne. Durch eine ge&auml;nderte
Initialisierung der virtuellen Maschine reduzierte sich die Startzeit
von Java-Applikationen deutlich, und mit dem neuentwickelten Compiler
gab es gro&szlig;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&uuml;ltige
Version des JDK 1.3 f&uuml;r Windows ausgeliefert. Versionen f&uuml;r
andere Betriebssysteme (namentlich SOLARIS und LINUX) sollten etwa
drei Monate sp&auml;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. 

<p>
2001 folgte dann das Bug-Fix-Release 1.3.1, und nach einigen Betas
und einem &#187;Release Candidate&#171; brachte SUN Mitte Februar
2002 schlie&szlig;lich das JDK 1.4 heraus - diesmal zeitgleich f&uuml;r
alle unterst&uuml;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&auml;hlten die <a name="ixa100052"><a href="index_a.html#ixb100056"><font color=#000080><tt>assert</tt></font></a></a>-Anweisung,
<a name="ixa100053">Unterst&uuml;tzung f&uuml;r XML</a>, neue Bibliotheken
f&uuml;r schnelle I/O-Zugriffe, Benutzer-Voreinstellungen, Logging
oder regul&auml;re Ausdr&uuml;cke sowie viele Erweiterungen bestehender
Bibliotheken. Zudem gab es Unterst&uuml;tzung f&uuml;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&ouml;nnen dazu beitragen, beispielsweise
falsche Casts zu vermeiden. 

<p>
Den derzeitigen H&ouml;hepunkt der Java-Entwicklung bildet die aktuelle
Java-Version 6, die urspr&uuml;nglich unter dem Codenamen <a name="ixa100054"><i>Mustang</i></a>
entwickelt wurde. Kurz nach Erscheinen der ersten Betaversion teilte
<i>Ray Gans</i> - einer der f&uuml;hrenden Java Entwickler bei Sun
- in seinem Blog unter <a href="http://weblogs.java.net/blog/ray_gans/">http://weblogs.java.net/blog/ray_gans/</a>
jedoch mit, dass Sun in Zukunft auf Codenamen verzichten und stattdessen
nur noch die Versionsnummern verwenden wird. 

<p>
Der gro&szlig;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&uuml;ck f&uuml;r
St&uuml;ck unter die popul&auml;re <a name="ixa100055"><i>General Public License</i></a>
(GPL) gestellt und damit jedermann zug&auml;nglich gemacht werden
soll. Java ist zwar seit der ersten Version kostenlos und kann von
jedem &uuml;ber die Homepage von Sun heruntergeladen werden, allerdings
war das &#187;Verteilen&#171; des Programms an Auflagen gebunden.
Au&szlig;erdem lief der Gedanke, dass Java zwar kostenlos aber eben
nicht frei verf&uuml;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 &#187;Nachimplementierungen&#171;
z&auml;hlen: 
<ul>
<li>GNU Classpath (<a href="http://www.gnu.org/software/classpath/">http://www.gnu.org/software/classpath/</a>)
<li>GNU Compiler for Java (<a href="http://gcc.gnu.org/java/">http://gcc.gnu.org/java/</a>)
<li>Kaffe (<a href="http://www.kaffe.org/">http://www.kaffe.org/</a>)
<li>Apache Harmony (<a href="http://harmony.apache.org/">http://harmony.apache.org/</a>)
</ul>

<p>
Mehr Informationen zum Thema Java und Open Source finden sich zum
Beispiel unter <a href="http://www.sun.com/software/opensource/java/faq.jsp">http://www.sun.com/software/opensource/java/faq.jsp</a>.

<p>
Die sechste Version von Java wurde am 11. Dezember 2006 ver&ouml;ffentlicht
und enth&auml;lt eine vollst&auml;ndig &uuml;berarbeitete und vereinheitlichte
Webservice-API, eine komplett in Java geschriebene Datenbank und einen
JavaScript-Interpreter. Au&szlig;erdem wurde viele Fehler behoben
und Java 6 ist nochmals einen &#187;Tick&#171; schneller als die vorangegangenen
Versionen. 

<p>
Das Engagement der Softwareentwickler zu den aktuellen Java-Versionen
ist betr&auml;chtlich. Neben vielen Partnerschaften, bei denen Spezialisten
aus der ganzen Welt durch die Mitarbeit im <a name="ixa100056"><i>Java Community Process</i></a>
(<a name="ixa100057"><i>JCP</i></a>) zu den Neuerungen und Erweiterungen
der aktuellen Versionen beigetragen haben, gibt es mittlerweile auch
eine gro&szlig;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&auml;&szlig;t sich
feststellen, dass Java nach der ersten (Applet-)Euphorie der Versionen
1.0 und 1.1 und einer dezenten Zur&uuml;ckhaltung w&auml;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. 
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>

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

<p>
Seit der f&uuml;nften Version setzt sich die - aus Sicht des Marketings
besser verwendbare - ganzzahlige Namenskonvention durch, bei der neue
Java-Version mit der nachfolgenden nat&uuml;rlichen Zahl gekennzeichnet
werden, w&auml;hrend die &#187;Zwischenversionen&#171; kleineren Verbesserungen
und Bugfixes vorbehalten bleiben. Dieses Schema wurde in alle Java-Editionen
&uuml;bernommen, die sich vor allem in Art und Umfang der enthaltenen
Bibliotheken unterscheiden. Ein Java-Entwickler kann sich zwischen
diesen Auslieferungen entscheiden: 
<ul>
<li>Die <a name="ixa100059"><i>Java 6 Standard Edition</i></a>, von
der in diesem Buch die Rede sein wird.
<li>Die <a name="ixa100060"><i>Java 5 Enterprise Edition</i></a>,
mit der verteilte, unternehmensweite Business-Applikationen entwickelt
werden k&ouml;nnen. Die sechste Generation der Enterprise Edition
ist f&uuml;r das dritte Quartal 2008 geplant.
<li>Die <a name="ixa100061"><i>Java Micro Edition</i></a>, f&uuml;r
kleine Ger&auml;te wie Mobiltelefone und PDAs.
<li>Die <a name="ixa100062"><i>Java Card Edition</i></a> bringt Java
schlie&szlig;lich auf Kreditkarten-gro&szlig;en Smartcards unter.
</ul>

<p>
Die offizielle Bezeichnung der aktuellen Java-Version ist also <a name="ixa100059"><i>Java
6 Standard Edition</i></a>. Sie besteht aus
den Teilen <a name="ixa100017"><i>JDK</i></a> (voller Name <i>Java
6 Development Kit</i> und <a name="ixa100063"><i>JRE</i></a> (voller
Name <i>Java 6 Runtime Environment</i>). W&auml;hrend das JDK alle
Werkzeuge zum <i>Entwickeln</i> von Java-Programmen enth&auml;lt,
bezeichnet das JRE die Laufzeitumgebung (oder <a name="ixa100064"><i>Virtuelle Maschine</i></a>)
um Java-Programme auszuf&uuml;hren. Wir werden meist von <i>Java 6</i>
oder der <i>Java 6 Edition</i> sprechen (weibliche Form (!)), insbesondere
wenn die aktuelle Version gemeint ist, mitunter aber auch den Begriff
<i>JDK</i> verwenden. Wenn nicht anders erw&auml;hnt, beziehen sich
alle Ausf&uuml;hrungen in diesem Buch auf die Standard Edition.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF">&nbsp;Hinweis&nbsp;</font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
Wesley, Version 5.0.1
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100008.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100008.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100010.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100013.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>