Java 24: Stream Gatherers, Class-File API und quantenresistente Algorithmen
Insgesamt 24 JEPs im JDK 24 erweitern die Stream-Verarbeitung, fĂĽhren quantenresistente Algorithmen ein und bringen eine API zum Zugriff auf Klassendateien.
(Bild: erstellt mit KI (Midjourney) durch iX-Redaktion)
Zum Start der Konferenz JavaOne 2025 in Redwood Shores, Kalifornien, ist Java 24 erschienen. Die Programmiersprache feiert dieses Jahr einen runden Geburtstag: James Gosling hat die erste Java-Version vor dreiĂźig Jahren vorgestellt.
In das aktuelle Release sind passend zur Versionsnummer insgesamt 24 Java Enhancement Proposals (JEPs) eingeflossen, eine Rekordzahl, seit Java-Releases im Halbjahrestakt erscheinen. Allerdings fĂĽhren die meisten JEPs in Java 24 frĂĽhere Neuerungen fort, viele davon als weitere Preview.
Videos by heise
Verarbeiten von Streams und Einblick in Klassen
Java 24 finalisiert mit Stream Gatherers und der Class-File API zwei wichtige Features. Beide haben jeweils zwei Previews in Java 22 und Java 23 hinter sich.
Stream Gatherers erweitern die Java-Stream-API um zusätzliche Operationen, die das Verändern von gestreamten Daten mit eigenen Transformationen ermöglichen.
Die Class-File API ermöglicht es, Java-Klassen zu parsen, zu erstellen und umzuwandeln. Bisher waren Entwicklerinnen und Entwickler dafür auf externe Libraries wie ASM oder Apache Commons BCEL (Byte Code Engineering Library) angewiesen. Die Class-File API stellt die Basisfunktionen zukunftssicher in Java Core bereit, soll aber die externen Libraries mit ihren umfangreicheren Funktionen nicht ersetzen.
Nebenläufigkeit im Fluss
Java 21 brachte als das jüngste JDK, für das LTS-Releases (Long-term Support) bereitstehen, umfangreiche Neuerungen für nebenläufige Programmierungen im Project Loom. Loom bedeutet Webstuhl, also das Werkzeug, um die Fäden (Threads) zu einem großen Ganzen zusammenzufügen.
Zwei wichtige Features bleiben in Java 24 weiterhin in der Preview-Phase: Structured Concurrency hilft dabei, Tasks aus unterschiedlichen Threads in einer Einheit zu verwalten, um die Wartbarkeit und Zuverlässigkeit von nebenläufigem Code zu verbessern. Scoped Values sorgen dafür, dass unveränderliche Daten sowohl in den Aufrufen innerhalb eines Threads als auch in Child-Threads geteilt werden können.
SchlĂĽssel und Quantencomputer
Zwei Neuerungen zur verbesserten Sicherheit halten als stabile Features ohne Preview Einzug in das JDK. Sie erweitern Java um vom NIST in FIPS 2023 standardisierte quantenresistente Algorithmen.
JEP 496 bietet eine Implementierung des SchlĂĽsselkapselungsverfahrens Module-Lattice-Based Key-Encapsulation Mechanism (ML-KEM). JEP 497 zielt mit einer Implementierung des Module-Lattice-Based Digital Signature Algorithm (ML-DSA) auf quantensichere digitale Signaturen.
Dauergast im Inkubator
Die Vector API schafft es immer noch nicht in die Preview-Phase, sondern erreicht in JDK 24 inzwischen den neunten Durchlauf im Inkubator. Dort soll sie auch bleiben, bis die benötigten Features in Project Valhalla für Value und Primitive Types Preview-Status erreichen. Die Vector API dient dazu, aktuelle CPU-Architekturen und Befehlserweiterungen wie Single Instruction Multiple Data (SIMD) und Vektorprozessoren für die Vektorberechnung zu nutzen.
Bei der Weiterentwicklung des OpenJDK ist der Inkubator die experimentelle Stufe vor der Preview. Sie zeigt an, dass die Funktionen bislang nicht ausgereift sind, sich grundlegend ändern können und eventuell gar nicht in die Sprache einfließen. Den Inkubator durchlaufen nicht alle Neuerungen, sondern einige gehen direkt in die Preview und andere sogar ohne Vorschau in die Sprache über.
Preview-Features sind vollständig spezifiziert und implementiert, können aber noch Veränderungen erfahren. Zwar gibt es keine Garantie, dass sie tatsächlich in der Sprache landen, aber bei Preview-Features ist das sehr wahrscheinlich, wie die Vergangenheit gezeigt hat.
Unter der Haube
Auch für den Garbage Collector gibt es einige Neuerungen. Unter anderem erhält nun der Shenandoah Garbage Collector den Generational Mode, der einen "Young Space" für neue und einen "Old Space" für alte Objekte verwaltet. Der Z Garbage Collector (ZGC) benutzt den Generational Mode bereits seit Java 23 standardmäßig, und in Java 24 verschwindet für ihn der Non-Generational Mode endgültig.
Ahead-of-Time Class Loading & Linking soll die Start-up- und Warm-up-Zeiten von Anwendungen verbessern und setzt dazu auf ein transparentes Caching, das keine Änderungen im Code der Anwendungen erfordert.
Eine vollständige und detaillierte Beschreibung der JEPs findet sich im iX-Artikel zu Java 24.
(rme)