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

Nach sechsmonatiger Entwicklung hat Oracle die Plattform Java SE 26 (Java Platform, Standard Edition 26) veröffentlicht, wobei das Open-Source-Projekt OpenJDK als Referenzimplementierung dient. Mit Ausnahme der Entfernung einiger veralteter Funktionen bleibt die RĂŒckwĂ€rtskompatibilitĂ€t zu frĂŒheren Versionen der Java-Plattform in Java SE 26 erhalten — die meisten zuvor geschriebenen Java-Projekte werden ohne Änderungen unter der neuen Version lauffĂ€hig sein. Installationsbereite 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) verfĂŒgbar. Die im Rahmen des OpenJDK-Projekts entwickelte Referenzimplementierung von Java SE 26 ist vollstĂ€ndig unter der GPLv2-Lizenz mit Ausnahmen fĂŒr GNU ClassPath veröffentlicht, die dynamisches Binden an kommerzielle Produkte erlauben.

Java SE 26 gehört zur Kategorie der Veröffentlichungen mit regulĂ€rer UnterstĂŒtzung, fĂŒr die Updates bis zur nĂ€chsten Version bereitgestellt werden. Als Version mit langfristiger UnterstĂŒtzung (LTS) sollten Java SE 25, Java SE 21 oder Java SE 17 verwendet werden, deren Updates bis 2033, 2031 und 2029 herausgegeben werden (öffentlich bis September 2030, 2028 und 2026). Die erweiterte UnterstĂŒtzung der LTS-Version Java SE 8 wird bis 2030, und die von Java SE 11 bis 2032 dauern.

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

  • Eine Warnung wird ausgegeben, wenn tiefe Reflection verwendet wird, um mit dem SchlĂŒsselwort „final“ markierte Felder zu Ă€ndern. ZukĂŒnftig ist geplant, unsichere Sprachfunktionen standardmĂ€ĂŸig zu deaktivieren und unter anderem zu gewĂ€hrleisten, dass als final gekennzeichnete Felder vollstĂ€ndig unverĂ€nderlich sind, indem Umgehungslösungen fĂŒr deren Änderung durch tiefe Reflection (API Reflection) entfernt werden.
  • Die API Applet (java.applet.Applet*, javax.swing.JApplet), die zur AusfĂŒhrung von Java-Anwendungen im Browser verwendet wurde, wurde entfernt. Diese API hat nach dem Ende des Supports fĂŒr das Java-Plugin fĂŒr Browser ihre Relevanz verloren und wurde 2021 als veraltet erklĂ€rt.
  • Die Möglichkeit zur Verwendung eines vorausgefertigten Caches (AOT – ahead-of-time) wurde mit allen Garbage Collectors, einschließlich ZGC (Z Garbage Collector), realisiert. Diese Änderung ermöglicht die UnterstĂŒtzung einer sequenziellen Ladeweise von vorab zwischengespeicherten Java-Objekten in den Speicher, indem ein universelles, von den Garbage Collectors unabhĂ€ngiges Format anstelle einer direkten Abbildung in speicherspezifische Cache-Darstellungen verwendet wird. Die Nutzung des AOT-Caches reduziert die Startzeit und beschleunigt den Warmup der HotSpot-VM.
  • Im HTTP Client API wurde die UnterstĂŒtzung des HTTP/3-Protokolls hinzugefĂŒgt, die es Anwendungen und Bibliotheken ermöglicht, Server ĂŒber HTTP/3 mit minimalen Änderungen im Code anzusprechen.
  • Die Leistung des Garbage Collectors G1 wurde verbessert, indem die Sperrzeiten zur Synchronisation von Anwendungs-Threads mit Threads des Garbage Collectors reduziert wurden.
  • Eine zweite Vorabversion der API zum Kodieren und Dekodieren von Objekten mit kryptografischen SchlĂŒsseln, Zertifikaten und Listen widerrufener Zertifikate unter Verwendung des PEM-Formats (Privacy-Enhanced Mail) wurde vorgeschlagen.
  • Die sechste Vorabversion der API fĂŒr strukturierten Parallelismus (Structured Concurrency) wurde fĂŒr Testzwecke angeboten. Diese API vereinfacht die Entwicklung von Multithread-Anwendungen, indem mehrere in verschiedenen Threads ausgefĂŒhrte Aufgaben als ein einzelner Block behandelt werden.
  • Die zweite Vorabversion 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. An diese Objekte werden Leistungoptimierungen angewendet, die Ă€hnlich wie bei Feldern mit dem SchlĂŒsselwort „final“ sind. Im Gegensatz zu „final“ trennt die neue API die Erstellung konstanter Werte von deren Initialisierung, stellt sicher, dass der Wert nur einmal initialisiert werden kann, verkĂŒrzt die Startzeit von Programmen und ermöglicht es, in Benutzeranwendungen Optimierungen wie Constant-Folding anzuwenden, die zuvor nur im internen JDK-Code verwendet wurden. class Application { // FrĂŒher: // static final UserService USERS = new UserService(); // Jetzt ist es möglich: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Im Rahmen des Mustervergleichs wurde ein vierter vorlĂ€ufiger Ansatz zur Verwendung primitiver Datentypen (int, byte, char und andere grundlegende Typen, die keine Objekte sind) in allen Arten von Vorlagen, im Operator „instanceof“ und in den „switch“-Blöcken vorgeschlagen. switch (x.getStatus()) { case 0 -> „okay“; case 1 -> „warning“; case 2 -> „error“; case int i -> „unbekannter Status: „ + i; } if (i instanceof byte b) { 
 b 
 }
  • Eine elfte Testimplementierung der API Vector wurde vorgeschlagen, die Funktionen fĂŒr vektorielle Berechnungen bereitstellt, die mit Vektor-Instruktionen der Prozessoren x86_64 und AArch64 durchgefĂŒhrt werden und die es ermöglichen, Operationen gleichzeitig auf mehrere Werte anzuwenden (SIMD). Im Gegensatz zu den im JIT-Compiler HotSpot verfĂŒgbaren Möglichkeiten zur automatischen Vektorisierung skalaren Operationen, bietet die neue API die Möglichkeit, die Vektorisierung fĂŒr die parallele Datenverarbeitung explizit zu steuern.

DarĂŒber hinaus hat Oracle das Projekt Detroit angekĂŒndigt, das Teil von OpenJDK wird und darauf abzielt, die PortabilitĂ€t zwischen Java, JavaScript und Python zu verbessern. Im Rahmen des Projekts wird angestrebt, die Integration in den JVM-Laufzeitprozess mit der JavaScript-Engine V8 und dem CPython-Interpreter zu ermöglichen. Zuvor hatte Oracle bereits die JavaScript-Engine Nashorn entwickelt, die auf der JVM lief, aber das Projekt eingestellt, da es schwierig war, eine separate Implementierung von JavaScript zu entwickeln, wĂ€hrend das Hauptökosystem auf der V8-Engine basiert.

ZusĂ€tzlich ist es erwĂ€hnenswert, dass ein Update der Plattform fĂŒr die Entwicklung von grafischen BenutzeroberflĂ€chen mit JavaFX 26 veröffentlicht wurde. In den nĂ€chsten Stunden wird auch die Veröffentlichung der universellen virtuellen Maschine GraalVM 26 erwartet, die die AusfĂŒhrung von Anwendungen in JavaScript (Node.js), Python, Ruby, R, allen Sprachen fĂŒr die JVM (Java, Scala, Clojure, Kotlin) und in Sprachen, fĂŒr die Bitcode LLVM generiert werden kann (C, C++, Rust), unterstĂŒtzt.

Quelle: opennet.ru

Erwerben Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster