Diverse Gründe, warum Java immer noch grossartig ist
Veröffentlicht am
Java hat radikale Veränderungen in der Technologielandschaft und viele Bedrohungen für seine Vormachtstellung überstanden. Was macht diese Technologie so großartig, und wie sieht die Zukunft von Java aus?
Eines der faszinierendsten Phänomene in der Softwarebranche ist die anhaltende Bedeutung von Java. Sowohl als Sprache als auch als Plattform hat Java radikale Veränderungen in der Technologielandschaft überlebt, und auch seine eigene interne Struktur hat sich mit ihr verändert. Wie ist es möglich, dass Java seit mehr als zwei Jahrzehnten im Zentrum von Unternehmen und Open Source steht? Schauen wir uns ein paar Faktoren an, die herausstechen.
Falls du deine Java Kenntnisse auffrischen oder sogar weiter ausbauen willst, empfehlen wir dir Skillshare als Lernplatform.
Der Prozess der Java-Gemeinschaft
Java begann als eine Alternative zur herkömmlichen Vorgehensweise - eine Art Emporkömmling. Heute ist es trotz wiederholter Anfechtungen eine anerkannte Säule der Unternehmenssoftware. Wie erklärt sich die anhaltende Relevanz von Java angesichts eines solch radikalen Wandels? Ein wesentlicher Faktor ist die Leidenschaft der Community, die durch Governance-Strukturen gefördert wird, die Entwickler einbinden, damit Java eine lebendige, dynamische Kraft bleibt.
Die Java-Governance ist alles andere als eine reibungslos funktionierende Maschine, sondern ein verwirrendes Sammelsurium von konkurrierenden Interessen und Organisationen, die sich im Java Community Process (JCP) und durch Java Specification Requests (JSRs) Gehör verschaffen. Letztendlich ist der JCP ein Ort, an dem Menschen, denen die Java-Technologie am Herzen liegt, Beiträge leisten und Konflikte lösen. Es ist eine ziemlich rätselhafte Kombination aus Bürokratie, Politik und Kreativität. Tatsächlich ist es so etwas wie eine funktionierende Demokratie.
Als langjähriger Java-Programmierer war es überraschend - eigentlich erstaunlich - zu sehen, wie die Sprache erfolgreich Lambdas und Closures integriert hat. Das Hinzufügen funktionaler Konstrukte zu einer objektorientierten Programmiersprache 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 neue Ideen integrieren kann, ist ermutigend.
Die Reaktionsfähigkeit von Java trägt dazu bei, dass die Sprache nützliche Verbesserungen einbezieht. Es bedeutet auch, dass Entwickler wissen, dass sie in einem lebendigen System arbeiten, das für den Erfolg in einer sich verändernden Welt gepflegt und kultiviert wird. Das Projekt Loom - ein ehrgeiziger Versuch, Javas Gleichzeitigkeitsmodell neu zu gestalten - ist ein Beispiel für ein Projekt, das Javas Verpflichtung zur Weiterentwicklung unterstreicht. Mehrere andere Vorschläge, die derzeit vom JCP bearbeitet werden, zeigen eine ähnliche Bereitschaft, wichtige Ziele zur Verbesserung der Java-Technologie zu verfolgen.
Die Menschen, die an Java arbeiten, sind nur die eine Hälfte der Geschichte. Die Menschen, die damit arbeiten, sind die andere Hälfte, und sie spiegeln die Vielfalt der zahlreichen Einsatzmöglichkeiten von Java wider. Social Coding und Open Source sind keine Besonderheiten von Java, aber sie sind 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 Charakters von Java.
Open-Source-Frameworks und -Tools
Ein weiterer wichtiger Grund für den Erfolg von Java ist die Fülle an Open-Source-Frameworks und -Tools, die um Java herum entwickelt wurden. Für fast alles, was Sie brauchen könnten, 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 sowohl für das Lernen als auch für den Aufbau einer Gemeinschaft von Vorteil.
Vor nicht allzu langer Zeit habe ich mich intensiv mit dem Parsen von YAML beschäftigt und dabei das SnakeYAML-Projekt entdeckt. Schon bald habe ich mich in die Materie eingearbeitet und versucht, etwas Exotisches mit diesem neuen Projekt zu machen. Nicht lange danach kam ich mit dem Besitzer des Projekts ins Gespräch.
Etwas Ähnliches passierte, als ich eine ausgeklügelte Prozessorchestrierung in der Nähe des Metalls durchführen musste. Zuerst entdeckte ich das NuProcess-Projekt, dann durfte ich eine kleine Korrektur beisteuern. Austausch wie dieser macht das Leben eines Programmierers reicher. Sie sorgen auch 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, bis hin zu monumentalen Projekten. Es gibt Anwendungsserver wie Tomcat und Jetty, Frameworks wie Hibernate und sogar die Eclipse IDE. Alle sind Open-Source-Projekte, die zur Mitarbeit einladen.
Spring-Dependencyinjektion
Spring MVC Framework Logo
Keine Würdigung des Java-Ökosystems wäre vollständig, ohne den Hut vor Spring zu ziehen. Dieses Meta-Framework ist vielleicht der Standard, an dem sich andere Meta-Frameworks orientieren können. Und warum? Weil Spring Ihnen dieselbe Möglichkeit bietet, 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. Dies 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. Aber Spring als Framework hat eine saubere und konsistente Methode zur Bereitstellung und Zusammenstellung von Anwendungskomponenten eingeführt. Das war damals ein Wendepunkt, und es ist auch heute noch wichtig.
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 entsprungen ist (dem Kopf von James Gosling) und dennoch flexibel genug geblieben ist, um auch heute noch relevant zu sein.
Ein wichtiges Merkmal des Designs von Java ist, dass in Java alles ein Objekt ist.
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 funktionale Programmiersprachen in die Sprache integriert haben. Aber sie sind standhaft dabei geblieben, dass Java eine stark objektorientierte Sprache bleibt, in der 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 dass 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, wie Zahnräder in einer Maschine.
Der Preis für diesen Ansatz ist Verwirrung in den frühen Phasen des Lernens. Praktisch jeder Java-Anfänger sieht sich mit wichtigen Fragen konfrontiert: Wozu ist das Schlüsselwort public da, was ist eine Klasse, und warum um alles in der Welt muss ich
public static void main(String[] args)
schreiben, nur um "hello world" zu drucken?
Aber bedenken Sie, dass diese Lernkurven starke Aspekte einer großen Ordnung sind: Der Anfänger stößt auf anspruchsvolle Konzepte, die für die Arbeitsweise von Java grundlegend sind, und nimmt sie in sich auf. Man könnte sagen, dass die streng klassenbasierte Struktur von Java-Programmen sich für eine gute Programmierung im Großen anbietet. 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 Aufwand für das Lernen in der frühen Phase.
Natürlich gibt es berechtigte Kritikpunkte an der Java-Syntax - das gilt auch 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."
Die JVM
Die Java Virtual Machine - Quelle: educba.com
Die Java Virtual Machine ist ein weiterer Aspekt der Java-Konstruktion, der gelegentlich kritisiert wird. Zur Zeit ihrer Entwicklung war die JVM eine kühne technische Lösung für die Vielfalt der Laufzeitumgebungen. Seitdem erschien sie manchmal als eine Last der überflüssigen Architektur und als eine Quelle von Leistungsproblemen. Doch nach Jahren unablässiger Verfeinerung hat sich die Technologie allmählich als richtig erwiesen. Sie hat sich auch als ziemlich vorausschauend erwiesen. Die Welt hat sich in letzter Zeit in virtuelle Maschinen verliebt; sie sind allgegenwärtig und bilden sogar die unterste Schicht des Cloud Computing.
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 der von C nahekommt.
Kreativität im Unternehmen
Die Softwareentwicklung besteht aus zwei starken Strömungen: der unternehmerischen und der kreativen. Es gibt einen Geist der kreativen Freude am Programmieren, der die einzig mögliche Erklärung dafür ist, 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 am Leben erhält. Um langfristig erfolgreich zu sein, muss ein Softwareprojekt Raum für beides schaffen. Java hat das geschafft.