Java 23 wurde offiziell veröffentlicht! Es handelt sich um eine Nicht-LTS-Version (Long Term Support). Auch wenn es sich um eine kurzlebige Version handelt, ist Java 23 vollgepackt mit spannenden Verbesserungen, Fehlerbehebungen und auch entfernten Funktionen und Optionen, auf die Sie möglicherweise achten müssen.
Sehen wir uns an, was es Neues gibt und wie es auf Funktionen früherer Versionen wie JDK 21 und JDK 22 aufbaut.
Eine der am meisten erwarteten Funktionen in JDK 23 sind Bereichswerte (Vorschau). Diese Funktion, die auch in JDK 22 und JDK 21 als Vorschau vorgestellt wurde, vereinfacht die Art und Weise, wie Methoden unveränderliche Daten über Threads und untergeordnete Threads hinweg teilen. In früheren Java-Versionen konnte die Verarbeitung threadlokaler Daten umständlich und speicherintensiv sein. Bereichsbezogene Werte ändern dies, indem sie eine effizientere Alternative mit geringerem Overhead bieten.
Was ist in JDK 23 anders? Die Methode ScopedValue.callWhere() verwendet jetzt eine neue funktionale Schnittstelle, die es dem Compiler erleichtert, abzuleiten, ob eine geprüfte Ausnahme ausgelöst werden könnte. Dies führte auch zur Entfernung der Methode ScopedValue.getWhere(), wodurch die API weiter optimiert wurde.
Dies ist eine Fortsetzung der Verbesserungen, die wir in früheren Versionen gesehen haben, und es ist spannend zu sehen, wie sich bereichsbezogene Werte zu einer dauerhaften Funktion entwickeln.
Das Parallelitätsmodell von Java war schon immer leistungsstark, aber schwierig zu verwalten. Geben Sie Strukturierte Parallelität (Vorschau) ein, die erstmals in JDK 21 erschien und nun in JDK 23 ihre dritte Vorschau erreicht hat. Die Idee hier ist, die gleichzeitige Programmierung intuitiver zu gestalten, indem verwandte Aufgaben, die in verschiedenen Threads ausgeführt werden, in einem gruppiert werden einzelne Arbeitseinheit. Dies vereinfacht die Fehlerbehandlung und verbessert die Zuverlässigkeit von Stornierungsprozessen.
In JDK 23 bleibt die strukturierte Parallelität in der Vorschau, aber sie macht den Parallelitätscode weiterhin einfacher zu verstehen und weniger fehleranfällig. Wenn Sie mit der Vorschau in JDK 21 oder JDK 22 gearbeitet haben, werden Sie die Weiterentwicklung dieser Funktion zu schätzen wissen. Es ist jetzt besser für den Umgang mit häufigen Parallelitätsproblemen wie Thread-Lecks gerüstet und erleichtert so das Schreiben von zuverlässigem Multithread-Code.
Eine weitere willkommene Ergänzung sind Flexible Constructor Bodies (Vorschau). Diese Funktion wurde erstmals in JDK 22 als „Anweisungen vor super()“ in der Vorschau angezeigt und ermöglicht es Entwicklern, Initialisierungscode zu schreiben, bevor sie den Superklassenkonstruktor aufrufen. Diese scheinbar kleine Änderung kann die Konstruktorlogik viel klarer machen und unnötige Objekterstellung verhindern, wenn die Validierung oder andere Setup-Logik fehlschlägt.
In JDK 22 wurde diese Funktion eingeführt, um Entwicklern mehr Kontrolle über die Konstruktorlogik zu geben, und die zweite Vorschau in JDK 23 verfeinert diese Funktion weiter. Durch die Verlagerung der Initialisierungslogik vor den Aufruf der Superklasse können Entwickler unübersichtliche statische Hilfsmethoden und Zwischenkonstruktoren vermeiden, die zuvor die Codebasis überfüllten.
Für diejenigen, die Java unterrichten oder schnelle Skripte schreiben, sind Implizit deklarierte Klassen und Instanzmethoden seit ihrer Einführung in JDK 21 ein Wendepunkt. Mit dieser Funktion können Anfänger vereinfachte Java-Programme schreiben, ohne sie verstehen zu müssen komplexe Sprachfunktionen von Anfang an.
In JDK 23 erhält diese Funktion einige zusätzliche Upgrades. Jetzt können implizit deklarierte Klassen automatisch drei statische Methoden für einfache Text-E/A importieren und bei Bedarf auch alle öffentlichen Klassen und Schnittstellen der obersten Ebene des Moduls java.base importieren. Diese Verbesserungen tragen dazu bei, die Lernkurve für Neueinsteiger noch reibungsloser zu gestalten.
Eine der neuen Vorschaufunktionen in JDK 23 sind Modulimportdeklarationen. Mit dieser Funktion können Sie alle von einem Modul exportierten Pakete mit einer einzigen Anweisung importieren und so die Wiederverwendung modularer Bibliotheken vereinfachen. Es ist besonders nützlich für Anfänger, die sich nicht mehr merken müssen, wo sich Pakete in der Hierarchie befinden, und es reduziert die Unordnung, die durch mehrere Typimport-on-Demand-Deklarationen entsteht.
Obwohl es sich hierbei um eine brandneue Funktion in JDK 23 handelt, ist sie vielversprechend, da sie das Modulsystem von Java leichter zugänglich macht, insbesondere für diejenigen, die mit der modularen Programmierung noch nicht vertraut sind.
Seien wir ehrlich – das Schreiben von JavaDoc mit HTML und den @-Tags kann mühsam sein. In JDK 23 ermöglicht die Funktion Markdown-Dokumentationskommentare (Vorschau) Entwicklern das Schreiben von API-Dokumentation mit Markdown, wodurch es einfacher wird, lesbare, gut formatierte Kommentare zu erstellen.
Obwohl dies eine neue Funktion in JDK 23 ist, hätte sie schon vor Jahren hinzugefügt werden sollen. Markdown ist in Entwicklergemeinschaften weit verbreitet und die Einführung in JavaDoc wird das Schreiben und Verwalten von Dokumentationen erheblich vereinfachen.
Wenn Sie mit dem Z Garbage Collector (ZGC) seit seiner Einführung in JDK 15 arbeiten, werden Sie erfreut sein zu erfahren, dass ZGC in JDK 23 jetzt standardmäßig auf generational eingestellt ist Modus (JEP 474). Dieser Schalter verbessert die Anwendungsleistung, indem er sich auf die häufige Sammlung kurzlebiger Objekte konzentriert. Obwohl nicht-generationelles ZGC in dieser Version veraltet ist, ist dies ein klares Zeichen dafür, dass der Generationsansatz die Zukunft der Garbage Collection in Java ist.
Wenn Sie JDK 22 oder früher verwenden, sollte der Wechsel zu JDK 23 ohne großen Aufwand Ihrerseits spürbare Leistungsverbesserungen bringen.
Die in JDK 16 eingeführte Vektor-API ermöglicht Entwicklern die Durchführung von Vektorberechnungen, die zur Laufzeit zu optimalen Vektoranweisungen kompiliert werden. Die API entwickelt sich weiter und in JDK 23 sehen wir den Achten Inkubator. Diese API befindet sich noch in der Entwicklung, was bedeutet, dass es sich noch nicht um eine finale Funktion handelt, aber sie nähert sich der Reife.
Für leistungskritische Anwendungen, insbesondere solche, die mit großen Datenmengen arbeiten, kann die Vector API enorme Beschleunigungen ermöglichen. Wenn Sie in früheren Inkubationen damit gearbeitet haben (wie JDK 22), werden Sie feststellen, dass es jetzt noch stabiler ist, aber immer noch darauf wartet, dass die letzten Teile zusammenpassen (wahrscheinlich im Zusammenhang mit Project Valhalla).
JDK 22 führte Stream Gatherers (Vorschau) ein, eine Funktion, die der Stream-API Flexibilität verleiht, indem sie benutzerdefinierte Zwischenoperationen ermöglicht. In JDK 23 gibt es eine zweite Vorschau. Wenn Sie gerne Streams zur Datenverarbeitung verwenden, werden Sie die Fähigkeit dieser Funktion zu schätzen wissen, Datenpipelines auf eine Weise zu transformieren, die bisher nur schwer zu erreichen war.
Stream Gatherer erweitern die Leistung von Streams und ermöglichen Entwicklern die einfachere Handhabung komplexerer Szenarien, insbesondere bei der Arbeit mit unendlichen Streams oder benutzerdefinierten Transformationen.
Wenn Sie Tools erstellen, die Java-Klassendateien bearbeiten, ist die Klassendatei-API (Vorschau) in JDK 23 genau das Richtige für Sie. Diese API wurde erstmals in JDK 22 eingeführt und bietet eine Standardmethode zum Parsen und Generieren von Klassendateien, ohne dass Bibliotheken von Drittanbietern wie ASM erforderlich sind. Die zweite Vorschau in JDK 23 verfeinert diese API und macht sie schlanker und einfacher zu verwenden.
Für Tool-Entwickler ist das eine große Sache. Kein mühsamer Aufwand mehr, Bibliotheken jedes Mal zu aktualisieren, wenn sich die JVM-Spezifikation ändert – Java verfügt jetzt über eine Erstanbieterlösung.
Java 23 ist zwar keine LTS-Version, aber es steckt voller spannender Funktionen, die auf den Einführungen von JDK 21 und JDK 22 aufbauen. Von bereichsbezogenen Werten und strukturierter Parallelität bis hin zu einem besseren Garbage Collector und Verbesserungen an Streams und Konstruktoren treibt diese Version die Java-Entwicklung voran.
Das obige ist der detaillierte Inhalt vonJava ist da. Was ist neu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!