jdk: Java 23 bring Javadoc-Markdown und eine Menge Previews

Java 23(öffnet im neuen Fenster) ist pünktlich turnusgemäß veröffentlicht worden. Die neue Version kommt mit zwölf JDK Enhancement Proposals (JEPs), von denen acht im Preview-Status und eines im inzwischen achten Inkubator-Durchlauf enthalten sind.
Nur drei JEPs sind damit in einer finalen Form enthalten, keines davon ändert etwas am Sprachumfang. Wegweisend ist Java 23 trotzdem, denn es ist die mittlere von drei Versionen zwischen LTS-Releases.
Neue Sprachfeatures wie die des Project Amber(öffnet im neuen Fenster) gehen normalerweise durch mindestens zwei Preview-Runden. Dadurch wird es alles, was nicht in 23 ist, schwer haben, bis zur nächsten LTS-Version, Java 25, final zu werden.
Die neuen finalen Features
JEP 467(öffnet im neuen Fenster) ermöglicht es Entwicklern, Javadoc-Kommentare in Markdown statt nur in HTML und @-Tags zu schreiben. JEP 474(öffnet im neuen Fenster) reduziert die Ressourcen- und Wartungskosten, indem der Z Garbage Collector (ZGC) standardmäßig im Generational-Modus betrieben wird. JEP 471(öffnet im neuen Fenster) deklariert die Speicherzugriffsmethoden in sun.misc.Unsafe als deprecated und bereitet so deren Entfernung vor.
Sprachfeatures des Project Amber
JEP 455(öffnet im neuen Fenster) (erstes Preview) erweitert das Pattern Matching, indem es primitive Typen in allen Kontexten zulässt und instanceof sowie switch um die Unterstützung aller primitiven Typen ergänzt. JEP 476(öffnet im neuen Fenster) (erstes Preview) erleichtert das Importieren von von ganzen Modulen und bietet eine Möglichkeit zum Auflösen von Konflikten mehrerer gleicher Klassennamen aus unterschiedlichen Modulen und Paketen.
JEP 477(öffnet im neuen Fenster) (drittes Preview) ermöglicht implizit deklarierte Klassen und Instanz-Main-Methoden, JEP 482(öffnet im neuen Fenster) (zweites Preview) erlaubt Anweisungen vor Konstruktoraufrufen mit super oder this .
Zurückgezogen wurde dagegen das dritte Preview von JEP 465(öffnet im neuen Fenster) , das sich weiter mit String Templates befassen sollte.
Die übrigen Änderungen
JEP 473(öffnet im neuen Fenster) (zweites Preview) erweitert die Stream-API um benutzerdefinierte Zwischenoperationen. JEP 480(öffnet im neuen Fenster) (drittes Preview) führt eine API für strukturierte Concurrency ein. JEP 481(öffnet im neuen Fenster) (drittes Preview) erlaubt es Methoden, Daten (scoped values) mit den Aufrufern innerhalb eines Threads und mit Kind-Threads zu teilen.
Die Vector-API ( JEP 469(öffnet im neuen Fenster) , achte Inkubator-Version) soll Vektorberechnungen ermöglichen und damit mehr Leistung im Vergleich zu herkömmlichen Skalarberechnungen bieten, befindet sich aber weiterhin nur in einer experimentellen Phase.
Daneben gab es noch einige kleinere Änderungen, die außerhalb des Vorschlagprozesses der JEPs durchgeführt wurden. So wurde zum Beispiel das Verarbeiten von Annotations in javac standardmäßig abgeschaltet. Eine vollständige Liste findet sich in den Release Notes(öffnet im neuen Fenster) .



