Diese neuen Features solltest du unbedingt kennen

Heutzutage gilt Java als veraltete, uncoole Sprache. Sie hat einen zu hohen Speicherverbrauch, es ist zu viel Boilerplate Code notwendig. Zudem weisen die Softwaresysteme zu hohe Startup-Zeiten auf und es fehlt an modernen Sprachfeatures.

Aber ist das wirklich so? Oder ist Java besser als sein Ruf und bietet moderne Features für die Entwicklung sowie interessante Möglichkeiten für den Betrieb auf den gängigsten Plattformen?

Im Rahmen meiner Artikelserie zeige ich, dass die Technologie Java alles mitbringt, was für den Einsatz in Softwareprojekten erforderlich ist. Durch die neuen Java 21 Features macht das Programmieren wieder Spaß und der Betrieb der Software wird wirtschaftlicher.

Neuer Entwicklungsprozess schafft Transparenz

Mit dem Release von Java 9 im Herbst 2017 wurde gleichzeitig ein neuer Entwicklungsprozess vorgestellt. Seitdem werden jeweils Mitte März und Mitte September neue Versionen freigegeben. Die Änderungen einer jeden Version werden anhand der Java Enhancement Proposals (kurz JEP) beschrieben. Diese so geschaffene Transparenz kommt jeder oder jedem in Form von Planbarkeit zugute.

Die JEPs werden in den unterschiedlichsten Projekten erstellt. Sie wurden ins Leben gerufen, um Java kontinuierlich zu verbessern und hin zu einer modernen Technologie zu transformieren.

Die Stewards und Architekten von Oracle verstehen Java als generische Plattform,

a) auf der ein möglichst großes Feld an Problemklassen gelöst werden kann,

b) die auf aktueller Hardware effizient läuft und

c) die die Interessen der Entwickler*innen bedient.

  • Java ist in meinen Augen aus mehreren Perspektiven eine absolut spannende Technologie. Java bietet als Plattform eine stabile und solide Basis für eine sehr große Vielfalt an Projektvorhaben.

    Arnim Kreutzer, Senior Software Engineer

Die Weiterentwicklung der Technologie

Die fünf größten Projekte, in deren Kontext an der Weiterentwicklung der Technologie gearbeitet wird, sind im Folgenden kurz beschrieben:

1. Project Loom

Dieses Projekt hat zum Ziel, die Handhabung der Nebenläufigkeit in Java zu verbessern. Hierzu wurden mit Java 21 leichtgewichtige user-mode Threads, Virtual Threads (JEP-444), eingeführt. Diese werden statt vom Betriebssystem von der JVM verwaltet. So kann potenziell eine Anzahl dieser Threads in der Größenordnung von 106 in der JVM verwaltet werden.

Darauf aufbauend wird daran gearbeitet, die Programmierung von Nebenläufigkeiten mit Hilfe der Structured Concurrency API (JEP-462, Second Preview) zu vereinfachen.

2. Project Amber

Die Weiterentwicklung der Sprachfeatures von Java ist das Ziel dieses Projekts. Hier werden einzelne Features wie bpsw. Records (JEP-395 / Java 16), Pattern Matching for switch (JEP-441 / Java 21) / for instanceof (JEP-394 / Java 16) und Sealed classes (JEP-409 / Java 17) entwickelt. Alle JEPs bieten für sich bereits einen Mehrwert – die genannten ermöglichen in Kombination ein daten-orientiertes Programmieren.

3. Project Leyden

Im Rahmen dieses Projekts werden drei Punkte angegangen: lange Startup-Zeiten, lange Zeit zur Peak Performance und Größe der Artefakte. Hierzu wird an dem Konzept Static Run-Time Images gearbeitet, bei dem nicht benötigte Features und Artefakte beim Build-Vorgang entfernt werden.

Dieses Projekt wurde Mitte 2022 ins Leben gerufen und hat aktuell noch keinen JEP veröffentlicht.

4. Project Valhalla

Dieses Projekt zielt darauf ab, die Leistung und Effizienz von Java im Umgang mit Speicher zu verbessern. Das Hauptaugenmerk liegt auf der Einführung von "Value Types" (Werttypen), die eine effizientere Nutzung des Speichers ermöglichen sollen. Diese Werttypen sollen die Vorteile von Objekten und Primitiven Typen kombinieren und so den Overhead reduzieren. Durch die Optimierung des Speicherverbrauchs wird Valhalla besonders relevant für Anwendungen, die große Datenmengen verarbeiten.

Aus diesem Projekt stammen bspw. die JEPs für die Hidden Classes (JEP-371 / Java 15), JVM Constants API (JEP-334 / Java 12) und Dynamic Class-File Constants (JEP-309 / Java 11).

5. Project Panama

Die Verbesserung der Interoperabilität von Java mit nativem Code ist das Ziel dieses Projekts. Das Hauptaugenmerk liegt dabei auf der Verbindung zwischen Java-Code und sogenannten "Foreign Functions" oder auch nativen Schnittstellen. Das Projekt strebt an, die Effizienz und Leistung von Java-Anwendungen zu steigern, insbesondere in Bereichen, in denen der Einsatz von nativem Code erforderlich ist. Die Foreign Function & Memory API ist in Java 21 als Preview Feature enthalten (JEP-442).

Doppelter Espresso Siebträgermaschine jambit

Fazit

Java 21 bietet inzwischen sehr viele neue, moderne Features und es kommen ständig neue hinzu. Der Code lässt sich kompakter implementieren, ohne dass die Lesbarkeit darunter leidet.

Auf der openJDK-Webseite sind umfangreiche Information zu den aktuellen Vorgängen rund um Java verfügbar. Es lohnt sich, sich dort umzuschauen.

Und was kommt als nächstes?

Im nächsten Artikel diskutiere ich das oben erwähnte datenorientierte Programmiermodell, also das Zusammenspiel von Records, Pattern Matching und Sealed Classes.

SCHREIB UNS

* Pflichtfeld

SCHREIB UNS

* Pflichtfeld

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen