25 Jahre: Silberner Glückwunsch, Java!

Heute vor 25 Jahren wurde die Programmiersprache Java der Weltöffentlichkeit vorgestellt. Eine Würdigung zum Jubiläum von Michael Wiedeking.

Lesezeit: 7 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 188 Beiträge
Von
Inhaltsverzeichnis

Ich hatte das Vergnügen, mich mit Java zu beschäftigen, noch bevor es am 22. Mai 1995 öffentlich bekannt gemacht wurde. Der Leiter des Sun-Schulungszentrums wusste um meine Vorliebe für Programmiersprachen und brachte mich mit dieser neuen Sprache in Verbindung. Warum ich dann die nächste Zeit damit beschäftigt sein würde, hauptsächlich programmierunerfahrenen Sun-Vertrieblern Java näher zu bringen, ist mir heute noch schleierhaft; aber immerhin hatten es trotz aller Widrigkeiten fast alle geschafft, mit einer Reihe von GIF-Bildern eine Animation auf den Netscape-Browser zu zaubern.

Von 1995 bis heute

Michael Wiedeking ist Gründer der MATHEMA Software GmbH und des Herbstcampus sowie Herausgeber des KaffeeKlatsch. Er ist Java-Programmierer der ersten Stunde, schreibt regelmäßig Artikel und spricht auf Konferenzen im In- und Ausland. Am liebsten "sammelt" er Programmiersprachen und beschäftigt sich mit ihrem Design und ihrer Implementierung.

Seitdem hat sich einiges geändert. Die wichtigste Schnittstelle eines dynamischen WWW ist nicht mehr CGI (Common Gateway Interface), mit sich bewegenden Bildern kann man niemanden mehr hinterm Ofen hervorlocken. Und das sofortige Validieren von Benutzerangaben kann man – wenn man möchte – heutzutage auch über ein Programm machen, das unter Linux läuft, das auf einem emulierten 8086-Computer installiert ist, der vollständig in JavaScript geschrieben ist. Ein Vierteljahrhundert ist dann doch eine ganz schön lange Zeitspanne.

Kleine Chronologie der wichtigsten Java-Meilensteine

Das Geniale an Java war damals nicht etwa das Versprechen, dass ein einmal geschriebenes Programm auf allen Betriebssystem läuft (Write Once, Run Anywhere); es waren der Komfort und die Einfachheit, mit der Java den Blick auf Software geändert hat. Ich erinnere mich noch vage daran, wie eigentümlich es war, unter Unix eine Netzwerkverbindung aufzubauen. Unter Java:

Socket s = new Socket(host, port);

Fertig! Aber das ist ja auch fast zu einfach. Wie sieht es denn auf der Serverseite aus?

ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();

Voilà! Und das steht repräsentativ für (fast) alles, was mit Java zu tun hat.

Gratulant

Markus Eisele ist Java Champion, Mitgründer der JavaLand-Konferenz und Developer Adoption Lead bei Red Hat.

"Ich hab mit Java angefangen, ohne es richtig zu realisieren. Meine Wurzeln waren in der Webentwicklung mit Perl und klassischem HTML, und zu Java bin ich über den Umweg einer übergelagerten Plattform (J2EE) gekommen. Für mich war es immer unglaublich zu sehen, wie eine "einfache" Programmiersprache so viel mehr Möglichkeiten durch die Zusatzfunktionen der Plattform bekam und welche unglaublich komplexen Anforderungen sich damit bewältigen ließen. Und das alles auf den Fundamenten einer offenen, freundlichen und starken Gemeinschaft. Was in den Anfängen noch sehr von Sun und weiter Oracle diktiert wurde, hat mit der Öffnung des OpenJDK noch viel mehr Auftrieb bekommen. Wenn ich mir so vor Augen führt, dass es vor Java quasi keine einzige kostenlose und freie Entwicklungssprache gab, die sich bei komplexen Enterprise-Problemen einsetzen ließ, und realisiere, welches wirklich unglaubliche Ökosystem nach fast einem Vierteljahrhundert entstanden ist, bin ich ein klein wenig Stolz, die Gelegenheit zu haben, auch ein Teil davon zu sein."

Ich höre jetzt natürlich die "Ja, aber…"-Zurufe. Beispielsweise lies es sich dann doch nicht so einfach an den kleinen Schräubchen drehen: Time-out, Puffergrößen usw. Aber in 90 Prozent der Fälle kam man damit zurecht, und wenn nicht, dann gab es ja noch das Java Native Interface (JNI), mit dessen Hilfe man sich nach wie vor in C austoben konnte. Und das war aus Performancesicht dringend nötig.

Java war in den meisten Fällen zwar schnell genug, aber weit davon entfernt, schnell zu sein. Frei nach dem Motto "Not macht erfinderisch" wurden dann auch alle Register gezogen. Bei uns entstand die Not etwa dadurch, dass wir evaluieren sollten, ob eine Bearbeitung von Bildern mit über einer Millionen Bildpunkte unter einer Sekunde möglich wäre. Eine für die damalige Zeit übliche Lösung war das Weglassen der Abbruchbedingungen bei der Bearbeitung eines Arrays:

try for (int i = 0;; i++) {
f(a[i]);
} catch (ArrayIndexOutOfBoundsException e) {
;
}

Der Verzicht auf die explizite Überprüfung der Grenzen, was Java sicherheitshalber bei dem Zugriff auf das Array ohnehin machte, brachte dann den nötigen Performancegewinn. Die Applikation, die Ärzten Röntgenbilder via Applet zur Verfügung stellen sollte, wurde dann aber mangels Netzbandbreite im letzten Jahrtausend doch nicht gebaut.

Ein aufmerksamer Leser wird bemerken wollen, dass hier wohl zwischen dem try und dem for eine Klammer fehlt. Aber tatsächlich war das in den allerersten Versionen nicht nötig, weil der Compiler einen Fehler hatte. Derer gab es auch noch einige mehr, von denen nur der private protected-Fall namentlich erwähnt werden soll, weil dieser in der ersten Version von dem legendären "Java in a Nutshell"-Buch dokumentiert ist. Schade, dass man diesem Fehler zugunsten nicht die Spezifikation geändert hat, hätte er doch Klassen im selben Paket nur dann den Zugriff auf derartig annotierte Felder und Methoden gewährt, wenn sie ererbt worden wären.

Heute sind "Optimierungen" wie das Weglassen von Bedingungen, das Pooling von Objekten et cetera hochgradig kontraproduktiv, sodass man wirklich alles richtig machen darf. Wobei sich auch hier die Geister scheiden, wie man etwas richtig macht. Ob man Getter oder Setter verwenden soll, obwohl sie für das Bean-Modell von Java essenziell sind, oder ob man Vererbung nutzen soll oder doch lieber auf Komposition setzt. Letztlich ist das aber egal; wesentlich ist doch, dass man so ziemlich alles mit Java machen kann.

Gratulant

Lars Röwekamp ist Gründer des IT-Beratungsunternehmens open knowledge und Blogger bei heise Developer.

"25 Jahre Java. (M)Ein halbes Leben begleitet du mich mittlerweile. Angetreten als Universallösung für programmierbare Türen, Kühlschranke, Ringe oder Kreditkarten hast du einen nicht immer einfachen Weg hinter dir. Wer hätte dir zum Beispiel zur Jahrtausendwende zugetraut, dass du jemals den Desktop verlassen und auf den Servern dieser Welt deinen Dienst tun würdest? Oder wer hätte damit gerechnet, dass du "verkleidet" als Android einmal den Markt der Mobile Devices erobern wirst? Und selbst in Zeiten von Cloud-native und Serverless, in denen dich viele Abtrünnige bereits totgesagt haben, ist dir mit GraalVM und Quarkus ein Comeback gelungen. Egal welche Herausforderungen in den letzten 25 Jahren auf dich warteten, am Ende hast du immer wieder einen Weg gefunden, dich für mich und den Rest der Welt interessant zu machen. Dafür danke ich dir und natürlich der sagenhaften Community um dich herum, dessen Teil sein zu dürfen ich froh und stolz bin! Ich freue mich auf die kommenden Jahre mit dir und darauf, wohin der Weg uns beide gemeinsam führen wird."