Es ist Zeit für eine Retrospektive. Meiner Ansicht nach tat die Sprache gut daran, mit einem minimalen Kern zu starten, statt einem „All-You-Can-Code“-Mantra zu folgen. Auch eine Programmiersprache ist letztendlich eine Art Anwendungssoftware, gewissermaßen ein Werkzeug für Programmierer. Die Sprachdesigner von Java konstruierten ihre Sprache so, dass sie minimalistisch die wichtigsten Sprachmerkmale mit einem sauberen konzeptionellen Modell unterlegt haben, das sich gut erweitern lässt. Immerhin sind Softwaresysteme Organismen, die sich evolutionär an ihre Umgebung anpassen sollten.
››Softwaresysteme sind Organismen, die sich evolutionär an ihre Umgebung anpassen‹‹
Die erste Version fungiert als Prototyp, der seine Praxisfähigkeit beweisen und mit fortschreitender Zeit auf neue Herausforderungen reagieren muss. Die Evolution von Java erfolgte meistens mit Umsicht in einem offenen Prozess, der bisweilen verschiedene Perspektiven vereinen musste, ohne dabei faule Kompromisse einzugehen.
Dass der Java-Philosophie „Write-once-Run-Anywhere“ eine virtuelle Maschine zugrunde liegt, gehört ebenfalls zu den gelungenen Schachzügen. Dadurch entfällt die Bereitstellung eines eigenen Java-Übersetzers für jede Art von Laufzeitumgebung. Virtuelle Maschinen lassen sich für die anvisierten Betriebssystem- und Zielumgebungen optimieren, etwa für Desktops, Browser, Enterprise-Umgebungen oder Embedded Systeme. Ganz abgesehen davon, hat der Wettbewerb von verschiedenen JVMs zu kontinuierlich verbesserter Effizienz dank immer ausgeklügelterer Entwurfstaktiken geführt. Mittlerweile spielt deshalb auch der früher oft ins Feld geführte Vergleich mit C oder C++ keine Rolle mehr. Java-Anwendungen funktionieren in der Regel einfach gut.
Als angenehmer Nebeneffekt virtueller Maschinen ergab sich mit der Zeit, dass auch andere Programmiersprachen darauf laufen, obwohl das sicherlich nicht zu den Zielen der Ur-JVM gehört hat. Dies ermöglicht polyglottes Programmieren und die Interaktion zwischen Komponenten in verschiedenen Sprachen.
Zu den weiteren Pluspunkten für das Java-Ökosystem zählt die Separation der Sprache von zusätzlicher Funktionalität, die eher in Bibliotheken beziehungsweise SDKs (JDKs) ihren Platz finden sollte. Programmiersprachen mit komplexen, umfangreichen und überfrachteten Sprachmerkmalen oder Standardbibliotheken hatten schon immer einen schweren Stand wegen geringer Akzeptanz.
››Java Anwendungen funktionieren in der Regel einfach gut‹‹
Für jede Art von Anwendungstyp konnten die Java-Verantwortlichen des Weiteren Profile erstellen, die sich an unterschiedliche Arten von Endgeräten und Entwicklern richten. Damit war der Grundstein für eine gesunde Diversifizierung gelegt. Die JDKs basieren auf intelligent entworfenen Wrapper-Facade-Schichten, die – für den Programmierer unsichtbar – auf systemnahe Teile zugreifen. Das führt zu verbessertem Laufzeitverhalten und zu mächtiger Funktionalität, die noch dazu auf vergleichbaren Umgebungen in gleicher Weise nutzbar ist.
Es gibt noch viele weitere Gründe, die für das Java-Ökosystem sprechen. Da wären zum Beispiel die Verfügbarkeit von Open-Source-Implementierungen, die leichte Erlernbarkeit, die Vielfalt vorhandener 3rd-Party-Lösungen, die Verbreitung als Lernsprache an Universitäten, das breite Angebot an Literatur, Tutorien, Communities wie den JUGs. Java findet sich heutzutage einfach überall.
Ihr Prof. Dr. Michael Stal