7 Gründe

Warum Java immer noch rockt

Kommentar  20.07.2022
Von 
Matthew Tyson ist Java-Entwickler und schreibt unter anderem für unsere US-Schwesterpublikation Infoworld.com.
Java hat viele radikale Veränderungen innerhalb der Technologielandschaft überstanden und dabei seine Vormachtstellung behalten.
Java behauptet sich seit mehr als zwei Jahrzehnten im Enterprise-Software-Bereich. Wir nennen Ihnen sieben gute Gründe dafür.
Java behauptet sich seit mehr als zwei Jahrzehnten im Enterprise-Software-Bereich. Wir nennen Ihnen sieben gute Gründe dafür.
Foto: New vision / Sukresh Manda - shutterstock.com | IDG

Eines der faszinierendsten Phänomene in der Softwarebranche ist Java. Sowohl die Sprache als auch die Plattform haben diverse Bedrohungen ihrer Vormachtstellung überlebt und ihre Struktur an diverse radikale Umbrüche innerhalb der Tech-Landschaft angepasst. Wie kann es sein, dass Java seit mehr als zwei Jahrzehnten im Zentrum von Unternehmen und Open Source steht? Wir haben sieben Faktoren identifiziert, die herausstechen.

1. Java Community Process

Java begann als eine Alternative zur herkömmlichen Vorgehensweise - eine Art Emporkömmling. Heute ist Java ein Grundpfeiler im Bereich Enterprise Software. Ein essenzieller Faktor für die anhaltende Relevanz ist dabei die Leidenschaft der Community. Diese wird durch Governance-Strukturen gefördert, die die Entwickler antreiben, dafür zu sorgen, dass Java lebendig und dynamisch bleibt. Die Java-Governance ist alles andere als eine reibungslos funktionierende Maschine, mehr ein verwirrendes Sammelsurium konkurrierender Interessen und Organisationen, die ihre Stimme im Java Community Process (JCP) und durch Java Specification Requests (JSRs) erheben. Letztendlich ist der JCP ein Ort, an dem Menschen, denen die Java-Technologie am Herzen liegt, Beiträge leisten und Konflikte lösen. Das stellt eine ziemlich rätselhafte Kombination aus Bürokratie, Politik und Kreativität dar - ähnlich einer funktionierenden Demokratie.

Als langjähriger Java-Programmierer war es erstaunlich zu sehen, wie die Sprache erfolgreich Lambdas und Closures integriert hat. Eine objektorientierte Programmiersprache um funktionale Konstrukte zu erweitern, war eine höchst umstrittene und beeindruckende Leistung. Gleiches gilt für die Übernahme von Konzepten, die von Technologien wie Hibernate und Spring (JSR 317 bzw. JSR 330) in die offizielle Plattform eingeführt wurden. Dass eine so weit verbreitete Technologie immer noch in der Lage ist, neue Ideen zu integrieren, mach Mut.

Die Reaktionsfähigkeit von Java trägt dazu bei, dass die Sprache nützliche Verbesserungen einbezieht. Das Project Loom - ein ehrgeiziger Versuch, Javas Gleichzeitigkeitsmodell neu zu gestalten - ist eines von vielen Beispielen für ein Projekt, das Javas Verpflichtung zur Weiterentwicklung unterstreicht. Doch die Menschen, die an Java arbeiten, sind nur ein Teil der Geschichte. Die Menschen, die mit Java arbeiten, die andere - und in ihnen spiegelt sich die Vielfalt der zahlreichen Einsatzmöglichkeiten wider. Social Coding und Open Source sind keine Besonderheiten von Java, aber ein wichtiger Bestandteil des gesunden Java-Ökosystems. Wie JavaScript entwickelte sich auch Java zusammen mit der Programmiergemeinschaft, als das Web an Zugkraft gewann. Diese Entstehungsgeschichte ist ein wichtiger Teil des Java-Charakters.

2. Open-Source-Frameworks und -Tools

Ein weiterer wichtiger Grund für den Erfolg von Java ist die Fülle von Open-Source-Frameworks und -Tools, die darum herum entwickelt wurden. Für fast jeden Zweck gibt es eine oder mehrere verfügbare Bibliotheken. Wenn Ihnen ein Projekt gefällt, ist die Wahrscheinlichkeit groß, dass es quelloffen ist und Sie dazu beitragen können. Das ist nicht nur von Vorteil, wenn es ums Lernen geht, sondern auch in Sachen Community Building.

Vor nicht allzu langer Zeit habe ich mich intensiv mit YAML-Parsing beschäftigt und dabei das SnakeYAML-Projekt entdeckt. Schon bald hatte ich mich in die Materie eingearbeitet und versucht, etwas Exotisches mit diesem neuen Projekt auszuprobieren. Kurze Zeit später stand ich in regem Austausch mit dem Owner des Projekts. Das bereichert das Leben eines Programmierers und sorgt dafür, dass sich Open-Source-Projekte weiterentwickeln.

Die Fülle der Projekte im Java-Ökosystem reicht von bescheidenen Beispielen wie den von mir vorgestellten bis hin zu Datenbanktreibern und ähnlichen Technologien. Es gibt Anwendungsserver wie Tomcat und Jetty, Frameworks wie Hibernate und sogar die Eclipse IDE. All das sind Open-Source-Projekte, die zur Mitarbeit einladen.

3. Spring

Keine Würdigung des Java-Ökosystems wäre vollständig, ohne den Hut vor Spring zu ziehen. Dieses Meta-Framework ist der Standard, an dem sich alle anderen Meta-Frameworks orientieren sollten. Das hat auch einen Grund: Spring bietet ihnen die Möglichkeit, benutzerdefinierten Code zu erstellen und den Code von Drittanbietern in Ihre Programme einzubinden. Durch die Implementierung von Dependency Injection und Inversion of Control können Sie mit Spring nicht nur Ihre eigenen internen Komponenten standardisieren, sondern auch die Art und Weise, wie Drittanbieterprojekte und -anbieter ihre Komponenten vorbereiten. Das führt zu einer größeren Konsistenz bei der Verwendung dieser Komponenten in Ihren Programmen.

Natürlich gibt es auch berechtigte Kritik an Spring, und es ist nicht immer das richtige Werkzeug. Google Guice ist ein weiteres Tool, das ähnlich wie Spring funktioniert. Letzteres hat als Framework aber eine saubere und konsistente Methode eingeführt, um Anwendungskomponenten zusammen- und bereitzustellen. Das war damals ein entscheidender Schritt und ist auch heute noch wichtig.

4. Alles ist ein Objekt

Wenn die Menschen, die hinter Java stehen und Java verwenden, der Wind sind, der das Schiff am Laufen hält, dann sind die technischen Aspekte von Java die Segel. Es ist beeindruckend, dass die ursprüngliche Java-Spezifikation wie eine Athene einem einzigen Kopf (dem von James Gosling) entsprungen ist und dennoch flexibel genug geblieben ist, um auch heute noch relevant zu sein. Ein wichtiges Merkmal des Java-Designs: Alles ist ein Objekt. In einer Entwicklungslandschaft, die derzeit die funktionale Programmierung bevorzugt, ist es manchmal in Mode, diesen Aspekt von Java und der objektorientierten Programmierung zu verwerfen.

Die Verwalter von Java haben darauf reagiert, indem sie einige Idiome der funktionalen Programmierung in die Sprache aufgenommen haben. Aber sie sind dabei standhaft geblieben: Java bleibt eine stark objektorientierte Sprache, in der tatsächlich alles ein Objekt ist. Es ist möglich, in jedem Paradigma großartigen oder furchtbaren Code zu schreiben. Wenn man ein Java-System betritt, weiß man von vornherein, dass es stark typisiert ist und alles in Klassen enthalten ist. Die Absolutheit dieser Designentscheidung reduziert die Komplexität und verleiht der Sprache und den Programmen, die sie verwenden, Klarheit. Gut geschriebene Java-Programme haben die mechanische Eleganz von gut geschriebenem, objektorientiertem Code. Die Funktionalität ist das Ergebnis von interagierenden Komponenten.

Der Preis für diesen Ansatz: Verwirrung in den frühen Phasen des Lernens. Praktisch jeder Java-Anfänger sieht sich mit wichtigen Fragen konfrontiert: Wozu dient das Keyword public, was ist eine Klasse, und warum in aller Welt muss ich public static void main(String[] args) schreiben, nur um "hello world" zu drucken?

Aber dabei sollte bedacht werden, dass diese Lernkurven starke Aspekte eines großen Ganzen sind: Anfänger stoßen auf anspruchsvolle Konzepte, die für die Arbeitsweise von Java grundlegend sind und nehmen sie in sich auf. Man könnte sagen, die streng klassenbasierte Struktur von Java-Programmen fördert allgemein gute Entwicklungsarbeit. Je größer die Systeme werden, desto vorteilhafter wird die Struktur, die in kleinerem Maßstab unhandlich erscheinen mag. In vielen Fällen rechtfertigt sie den Lernaufwand.

Natürlich gibt es berechtigte Kritikpunkte an der Java-Syntax - das Gleiche gilt für JavaScript und jede andere Sprache. Wie Bjarne Stroustrup einmal sagte: "Es gibt nur zwei Arten von Sprachen: die, über die sich die Leute beschweren - und die, die niemand benutzt."

5. Java Virtual Machine

Die Java Virtual Machine (JVM) ist ein weiterer Aspekt des Java-Konstrukts, der gelegentlich kritisiert wird. Zur Zeit ihrer Entwicklung war die JVM eine kühne technische Lösung für die vielfältigen Laufzeitumgebungen. Seitdem erscheint sie manches Mal als überflüssige Architekturlast und Quelle von Performance-Problemen. Doch nach Jahren unablässiger Verfeinerung erweist sich die Technologie allmählich als vorausschauend, in einer Welt, die sich in den letzten Jahren zunehmend in virtuelle Maschinen verliebt, die überall zu finden sind - selbst in den untersten Cloud-Computing-Schichten.

Angewandt auf DevOps-Container und serverlose Architekturen bietet die JVM ein klares Ziel für die Bereitstellungsumgebung mit genau definierten Eigenschaften und Kontrollen. Moderne virtuelle Java-Maschinen können sich ebenfalls sehen lassen. Sie bieten eine ausgefeilte automatische Speicherverwaltung mit einer Leistung, die an die von C heranreicht.

6. Enterprise-Kreativität

Die Softwareentwicklung besteht aus zwei starken Strömungen: der unternehmerischen und der kreativen. Nur der Geist der kreativen Freude am Programmieren erklärt, dass man beispielsweise 25 Jahre lang an einem Dungeon Simulator arbeitet. Diese Kreativität, gepaart mit einem soliden geschäftlichen Nutzen, ist die Alchemie, die Java lebendig hält. Um langfristig erfolgreich zu sein, muss ein Softwareprojekt Raum für Enterprise und Kreativität schaffen. Java hat das geschafft.

7. WebAssembly & die Zukunft

Ein potenziell wegweisendes Ereignis am Java-Horizont: WebAssembly (WASM). Java in WASM ist derzeit noch begrenzt und es ist nicht sicher, wie sich die Zukunft entwickeln wird. Es ist jedoch möglich, dass Java eines Tages - ähnlich wie JavaScript - im Browser verwendet werden kann, mit vollem Zugriff auf das DOM und die Browser-API. Stellen Sie sich Java noch einmal im Browser vor, aber dieses Mal wirklich. (fm)

Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.