Java als universelle Programmiersprache

Nach etlichen Jahren der Entwicklung ist Java zur erwachsenen Allzweck-Programmiersprache geworden. Es gibt keine Alternative für Entwickler, die ausschließlich mit einer einzigen Programmiersprache implementieren wollen.

Sprachen  –  234 Kommentare
Java als universelle Programmiersprache

Immer wieder stand Java in der Kritik: Sei es wegen schlechter Performance, fehlenden Features wie Mehrfachvererbung, mangelnden funktionalen Aspekten, mangelhafter Ausnutzung moderner Prozessorarchitekturen oder der Umständlichkeit der Programmierung. Bei Betrachtung der Java Enterprise Edition (Java EE), um von früheren Versionen des J2EE-Zeitalters gar nicht erst zu sprechen, ist der Tonfall der Java-Gegner noch deutlich gereizter. Dennoch steht Java bei den beliebtesten Programmiersprachen immer noch an der Spitze oder zumindest auf einem der ersten Plätze. Die Geburt neuer und vielfältiger Programmiersprachen konnte Java letztlich nicht von der Pole-Position verdrängen.

Vor über vier Jahren hat Lofi Dewanto, einer der beiden Autoren dieses Artikels, mit einem Beitrag auf heise Developer zu seinem Wunsch zu einem verstärkten Einsatz von Java als Allzweck-Programmiersprache eine kontroverse Diskussion erzeugt. Es lohnt sich, einen aktualisierten Blick auf die Entwicklung zu werfen – die Anzahl der Java-Herausforderer dürfte nicht kleiner geworden sein. Im folgenden Artikel beschäftigen sich die Autoren mit der Alltagstauglichkeit von Java und möglichen Bedrohungen sowie der Frage, ob sich Java mit Compilern, Transpilern, virtuellen Maschinen und Erweiterungen sinnvoll als Allzweck-Programmiersprache einsetzen lässt.

Bei Betrachtung der Frage, wie es mit Java weitergeht, kann man die diesbezüglichen Statements in zwei Kategorien einteilen. Erstens Aussagen über Java an sich, zweitens über neue Sprachen oder Konzepte, die Java bedrohen. Als Produkt von Sun Microsystems konnte sich Java bei ständig wachsender Beliebtheit recht beschaulich weiterentwickeln. Mit der Akquise seitens Oracle 2010 hat sich das grundlegend geändert. Im Gegensatz zum Vorbesitzer hat Oracle eine Größe, die in der IT-Welt ein natürliches Misstrauen erzeugt. Nach sechs Jahren lässt sich zumindest festhalten, dass Oracle Java durchaus Beachtung schenkt.

Hinsichtlich Java EE hat Oracle allerdings gerade in den letzten Jahren wenig Engagement gezeigt, was im letzten Jahr unter anderem zur Gründung der Java EE Guardians, einer von Oracle unabhängigen Initiative zur Förderung von Java EE geführt hatte. Es ist ziemlich sicher, dass sich Java EE von behäbigen, schwergewichtigen Applikationsservern weg hin zu einfachen Architekturen bewegen muss. Das scheint auch Oracle erkannt zu haben. Schließlich gibt es immer noch das Spring Framework, das derzeit beispielsweise mit Spring Cloud und Spring Boot wieder einmal beweist, wie einfach sich Java in zeitgemäßen Architekturen einsetzen lässt.

Das Einsatzgebiet von Java reicht heute von serverseitigen Webapplikationen bis hin zu Anwendungen für Smartphones, Raspberry Pi und Haushaltsgeräten wie Kaffeemaschine, Spülmaschine und Toaster. Java wird somit wohl noch einige Zeit eine wichtige Rolle in der IT-Welt spielen, und auch die rund 100.000 Java-Programmierer in Deutschland müssen sich nicht allzu bald ein neues Betätigungsfeld suchen. Nicht zu verschweigen ist jedoch, dass es derzeit einige Bereiche gibt, in denen Java durchaus zurückgedrängt wird:

  • Google wechselt die UI-Implementierung von Java (GWT) zu Dart für das wichtige Produkt AdWords.
  • Microsoft sieht die Zukunft für Webanwendungen (Client und Server) bei JavaScript und Node.js beziehungsweise der eigenen Programmiersprache TypeScript.
  • Google erwägt, Apples Swift, vor allem aber Kotlin als Programmiersprache für Android zu nutzen. Ob das vorrangig eine Drohung in Richtung Oracle darstellt, ist freilich unklar.
  • Auf der Backend-Seite erlauben Container-Systeme wie Docker, kombiniert mit schlanken Diensten (Stichwort Microservices) eine relativ einfache Implementierung beinahe beliebig skalierbarer hochverfügbarer Systeme. Ob der Overhead der JVM dazu passt, lässt sich sicherlich in Frage stellen.

Trotz der zahlreichen Alternativen bleibt die Frage bestehen: Können Java-Entwickler auch in den nächsten Jahren mit einer einzigen Programmiersprache alle Aufgaben ökonomisch sinnvoll bewältigen und milde lächelnd auf die Angriffsversuche vermeintlicher Alternativen herabschauen? Oder werden sie sich anpassen müssen?