Java 22 reduziert Boilerplate Code und stabilisiert Anbindung an C++ und Co.

Seite 2: Im Kern: Core Libraries & Tools

Inhaltsverzeichnis

Von den drei Proposals, die sich auf die Core Libraries und Tools beziehen, sind zwei komplett neu. "JEP 457 Class-File API" führt als erste Preview eine API ein, um Java-class-Dateien zu parsen, zu erstellen und umzuwandeln. Sie soll als Standard für den Core von Java class-Dateien ebenso verarbeiten können wie die Tools von Drittanbietern, darunter ASM oder Apache Commons BCEL (Byte Code Engineering Library). Allerdings soll sie laut der Beschreibung im JEP diese Tools weder ersetzen noch erhebt sie den Anspruch, die schnellste Library zum Verarbeiten von class-Dateien zu werden.

Ebenfalls neu ist das "JEP 461: Stream Gatherers", das die Java Stream-API um zusätzliche Operationen erweitert, die das Transformieren von gestreamten Daten ermöglicht und dabei weitergeht als die bisherige Erweiterung über Stream::collect(). Dieser Collector kann aber weiterhin hinter dem Gatherer stehen, und mehrere Gatherer lassen sich in der Form stream.gather(...).gather(...).collect(...) kombinieren. Die Transformation über die Gatherer kann in 1:1-, 1:n-, n:1- oder n:m-Relation erfolgen.

Community-Konferenz für Java-Entwickler

(Bild: DOAG)

Die JavaLand-Konferenz findet dieses Jahr vom 9. bis 11. April erstmals am Nürburgring statt. Die Hauptkonferenz der Jubiläumsausgabe bietet rund 140 Vorträge zu den jüngsten und den kommenden Entwicklungen rund um Java und Jakarta EE. Daneben stehen der Einsatz von KI und das Zusammenspiel mit anderen Programmiersprachen auf der Agenda.

Die JavaLand-Veranstaltung ist eine Community-Konferenz für Java-Entwickler und wird durchgeführt von der Deutschen Oracle-Anwendergemeinschaft (DOAG) und Heise Medien in Zusammenarbeit mit dem iJUG, dem Interessenverbund deutschsprachiger Java User Groups.

Das "JEP 458: Launch Multi-File Source-Code Programs" fließt ohne Vorschau in die Sprache ein. Es ergänzt das im OpenJDK 11 eingeführte JEP 330, das es ermöglicht, .java-Sourcedateien direkt auszuführen, ohne sie im Vorfeld separat zu kompilieren. Dabei kompiliert der Launcher die verwendete Klasse ad-hoc in den Speicher. Allerdings funktionierte das bisher nur mit einer einzelnen .java-Datei. Das JEP 458 hebt diese Begrenzung nun auf und ermöglicht auch, verschachtelte Sourcedateien ohne vorheriges Kompilieren zu verwenden.

Das letzte Java Enhancement Proposal für Java 22 bezieht sich auf den G1 Garbage Collector. Bisher musste dieser im Zusammenspiel mit Sprachen wie C++ über JNI teilweise pausieren, weil es Funktionen zum Erstellen direkter Pointer auf Java-Objekte gibt, die den Zugriff aus dem nativen Code ermöglichen. Diese Objekte dürfen nicht verschoben werden. Mit dem "JEP 423: Region Pinning for G1" kann der Garbage Collector die Bereiche mit den kritischen Objekten pinnen und somit von den Aufräumarbeiten ausnehmen, dabei aber ansonsten weiterarbeiten.

Neben den JEPs gibt es auch kleinere Ergänzungen wie die Klasse ListFormat, die eine Liste von Strings in drei verschiedenen Stilen und drei verschiedenen Enumerations-Typen sowie passend zur eingestellten Region (Locale) ausgibt. Beispielsweise ergibt eine Aufzählung von Foo, Bar und Baz mit der Locale.US folgende Ausgabe:

  FULL SHORT NARROW
STANDARD Foo, Bar, and Baz Foo, Bar, & Baz Foo, Bar, Baz
OR Foo, Bar, or Baz Foo, Bar, or Baz Foo, Bar, or Baz
UNIT Foo, Bar, Baz Foo, Bar, Baz Foo Bar Baz

Im Deutschen mit der Locale.GERMANY gibt es keine Unterscheidungen zwischen den Stilen FULL, SHORT und NARROW, und auch bei der Art der Aufzählung sticht nur OR hervor:

STANDARD Foo, Bar und Baz
OR Foo, Bar oder Baz
UNIT Foo, Bar und Baz

Anders als bei Java 21 gibt es für das JDK 22 keine LTS-Varianten. Damit läuft der offizielle Support üblicherweise so lange, bis Java 23 erscheint, also planmäßig bis September 2024. Für das im September 2023 veröffentlichte Java 21 bietet Oracle dagegen Support für fünf Jahre und erweiterten Support sogar für acht Jahre. Adoptium garantiert für LTS-Releases mindestens vier Jahre Support. Da die Anbieter LTS-Releases im Zweijahresrhythmus herausbringen, wird das für September 2025 vorgesehene Java 25 das nächste Java-Release, für das weitgehender Long-term Support zu erwarten ist.

Die vollständige Liste der Neuerungen lässt sich der OpenJDK-Seite zum JDK 22 entnehmen.

(rme)