Veröffentlichung von Java SE 26 und OpenJDK 26. Projekt zur Integration von UnterstĂŒtzung fĂŒr JavaScript und Python in die JVM.

Nach sechsmonatiger Entwicklung hat Oracle die Plattform Java SE 26 (Java Platform, Standard Edition 26) veröffentlicht, deren Referenzimplementierung auf dem Open-Source-Projekt OpenJDK basiert. Abgesehen von der Entfernung einiger veralteter Funktionen bleibt die AbwĂ€rtskompatibilitĂ€t zu frĂŒheren Versionen der Java-Plattform in Java SE 26 erhalten – die meisten zuvor entwickelten Java-Projekte werden ohne Änderungen unter der neuen Version lauffĂ€hig sein. Installierbare Builds von Java SE 26 (JDK, JRE und Server JRE) sind fĂŒr Linux (x86_64, AArch64), Windows (x86_64) und macOS (x86_64, AArch64) vorbereitet. Die im Rahmen des OpenJDK-Projekts entwickelte Referenzimplementierung von Java SE 26 ist vollstĂ€ndig unter der GPLv2-Lizenz mit Ausnahmen von GNU ClassPath lizenziert, die dynamisches Linking mit kommerziellen Produkten erlauben.

Java SE 26 gehört zur Kategorie der Versionen mit regulĂ€rem Support, fĂŒr die Updates bis zur nĂ€chsten Veröffentlichung bereitgestellt werden. FĂŒr langfristigen Support (LTS) sollte Java SE 25, Java SE 21 oder Java SE 17 verwendet werden, fĂŒr die Updates bis 2033, 2031 und 2029 veröffentlicht werden (öffentlich bis September 2030, 2028 und 2026). Der erweiterte Support fĂŒr den LTS-Zweig Java SE 8 wird bis 2030 dauern, wĂ€hrend Java SE 11 bis 2032 unterstĂŒtzt wird.

Unter den Änderungen in Java SE 26 (1, 2, 3, 4):

  • Es wurde eine Warnung implementiert, wenn tiefe Reflexion verwendet wird, um Felder zu Ă€ndern, die mit dem SchlĂŒsselwort „final“ gekennzeichnet sind. In Zukunft ist geplant, unsichere Sprachfeatures standardmĂ€ĂŸig zu deaktivieren und unter anderem zu gewĂ€hrleisten, dass als final gekennzeichnete Felder vollstĂ€ndig unverĂ€nderlich sind, indem der Umweg zur Änderung ĂŒber tiefe Reflexion (API Reflection) entfernt wird.
  • Das API Applet (java.applet.Applet*, javax.swing.JApplet) wurde entfernt, das zum AusfĂŒhren von Java-Anwendungen im Browser verwendet wurde. Dieses API ist nach der Einstellung des Supports fĂŒr das Java-Plugin fĂŒr Browser obsolet geworden und wurde 2021 als veraltet erklĂ€rt.
  • Die Möglichkeit zur Verwendung von vorab generiertem Cache (AOT - ahead-of-time) mit allen Garbage Collectoren, einschließlich ZGC (Z Garbage Collector), wurde realisiert. Diese Änderung umfasst die UnterstĂŒtzung fĂŒr das sequenzielle Laden von zwischengespeicherten Java-Objekten in den Speicher unter Verwendung eines universellen und unabhĂ€ngig von Garbage Collectoren-Formats anstelle einer direkten Abbildung in speicher-spezifische Cache-Darstellungen. Die Verwendung des AOT-Caches verkĂŒrzt die Startzeit und beschleunigt das Warmup der HotSpot-JVM.
  • Die UnterstĂŒtzung fĂŒr das HTTP/3-Protokoll wurde zur HTTP Client-API hinzugefĂŒgt, das es Anwendungen und Bibliotheken ermöglicht, nach minimalen CodeĂ€nderungen auf Server ĂŒber HTTP/3 zuzugreifen.
  • Die Leistung des G1-Garbage Collectors wurde verbessert, indem die Sperrzeiten zur Synchronisation der Anwendungsthreads mit den Threads des Garbage Collectors verringert wurden.
  • Ein zweiter Vorab-Entwurf der API zum Codieren und Decodieren von Objekten mit kryptografischen SchlĂŒsseln, Zertifikaten und Sperrlisten fĂŒr Zertifikate wurde vorgeschlagen, unter Verwendung des PEM-Formats (Privacy-Enhanced Mail).
  • Ein sechster Vorab-Entwurf der API fĂŒr strukturiertes Parallelismus (Structured Concurrency) wurde zum Testen vorgeschlagen, der die Entwicklung von Multithread-Anwendungen vereinfacht, indem mehrere Aufgaben, die in verschiedenen Threads ausgefĂŒhrt werden, als ein einziger Block behandelt werden.
  • Die zweite Vorab-Überarbeitung der API fĂŒr Lazy Constants wurde hinzugefĂŒgt, um mit Objekten zu arbeiten, die unverĂ€nderliche Daten enthalten und in der JVM als Konstanten verarbeitet werden. Auf solche Objekte werden Leistungsoptimierungen angewendet, die mit Feldern mit dem SchlĂŒsselwort „final“ vergleichbar sind. Im Gegensatz zu „final“ trennt die neue API die Erstellung permanenter Werte von deren Initialisierung, garantiert, dass der Wert nur einmal initialisiert werden kann, verkĂŒrzt die Programmstartzeiten und ermöglicht es, in Benutzer-Code Optimierungen wie Constant Folding anzuwenden, die zuvor nur im internen Code der JDK verwendet wurden. class Application { // War: // static final UserService USERS = new UserService(); // Jetzt möglich: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Im Mechanismus der Mustervergleichs wurde eine vierte vorlĂ€ufige Möglichkeit fĂŒr die Verwendung primitiver Typen (int, byte, char und andere Basis-Typen, die keine Objekte sind) in allen Arten von Mustern, im Operator „instanceof“ und in „switch“-Blöcken vorgeschlagen. switch (x.getStatus()) { case 0 -> „okay“; case 1 -> „warnung“; case 2 -> „fehler“; case int i -> „unbekannter Status: “ + i; } if (i instanceof byte b) { 
 b 
 }
  • Es wurde eine elfte Testimplementierung der API Vector vorgeschlagen, die Funktionen fĂŒr Vektorberechnungen anbietet, die unter Verwendung der Vektorbefehle der x86_64- und AArch64-Prozessoren durchgefĂŒhrt werden und es ermöglichen, Operationen gleichzeitig auf mehrere Werte anzuwenden (SIMD). Im Gegensatz zu den im JIT-Compiler HotSpot bereitgestellten Automatisierungsfunktionen zur Vektorisierung skalare Operationen, bietet die neue API die Möglichkeit, die Vektorisierung fĂŒr die parallele Datenverarbeitung explizit zu steuern.

DarĂŒber hinaus kĂŒndigte Oracle das Projekt Detroit an, das im Rahmen von OpenJDK entwickelt werden soll und darauf abzielt, die PortabilitĂ€t zwischen Java, JavaScript und Python zu verbessern. Im Rahmen des Projekts wird angestrebt, die Möglichkeit zu bieten, die JVM-Laufzeit mit der JavaScript-Engine V8 und dem CPython-Interpreter einzubetten. Zuvor hatte Oracle bereits die JavaScript-Engine Nashorn entwickelt, die auf der JVM lief, das Projekt jedoch aufgrund der Schwierigkeiten eingestellt, eine separate Implementierung von JavaScript zu entwickeln, wĂ€hrend das Hauptökosystem auf die V8-Engine angewiesen ist.

ZusĂ€tzlich kann die Veröffentlichung eines Updates der Plattform zur Erstellung von grafischen BenutzeroberflĂ€chen mit JavaFX 26 erwĂ€hnt werden. In den nĂ€chsten Stunden wird auch die Veröffentlichung der universellen GraalVM 26 erwartet, die die AusfĂŒhrung von Anwendungen in JavaScript (Node.js), Python, Ruby, R sowie in allen Sprachen fĂŒr die JVM (Java, Scala, Clojure, Kotlin) und in Sprachen, fĂŒr die Bytecode LLVM generiert werden kann (C, C++, Rust), unterstĂŒtzt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4