Veröffentlichung von Java SE 27 und OpenJDK 27

Nach sechsmonatiger Entwicklung hat Oracle die Plattform Java SE 27 (Java Platform, Standard Edition 27) veröffentlicht, deren Referenzimplementierung auf dem OpenJDK-Projekt basiert. Mit Ausnahme der Entfernung einiger veralteter Funktionen bleibt die RĂŒckwĂ€rtskompatibilitĂ€t mit frĂŒheren Versionen der Java-Plattform in Java SE 27 erhalten — die meisten zuvor geschriebenen Java-Projekte werden ohne Änderungen unter der neuen Version lauffĂ€hig sein. Installationsbereite Builds von Java SE 27 (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 27 ist vollstĂ€ndig unter der GPLv2-Lizenz mit Ausnahmen von GNU ClassPath offen, die dynamisches Binden an kommerzielle Produkte erlauben.

Java SE 27 gehört zur Kategorie der Versionen mit regulĂ€rem Supportzeitraum, fĂŒr die Updates bis zur nĂ€chsten Version veröffentlicht werden. FĂŒr Langzeit-Support (LTS) sollten 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 die LTS-Version Java SE 8 wird bis 2030 dauern, und Java SE 11 bis 2032.

Zu den Änderungen in Java SE 27 gehören (1, 2, 3, 4):

  • StandardmĂ€ĂŸig wird in allen Umgebungen der Garbage Collector G1 (Garbage-First) verwendet, der zuvor vor allem in Serversystemen zum Einsatz kam. G1 ist fĂŒr den Einsatz auf Multiprozessorsystemen mit großem Arbeitsspeicher optimiert und auf ein ausgewogenes VerhĂ€ltnis zwischen vorhersehbaren Latenzen und hohem Durchsatz ausgelegt. Im Betrieb unterteilt G1 den Speicher in viele kleine Regionen und bereinigt vorrangig jene Bereiche, in denen sich mehr ungenutzte Objekte und weniger aktiv verwendete Daten befinden.
  • In der HotSpot JVM sind kompakte Objekt-Header standardmĂ€ĂŸig aktiviert. Die Header-GrĂ¶ĂŸe auf 64-Bit-Systemen wurde von 96 auf 64 Bit reduziert, was den Speicherverbrauch senkt und die Wahrscheinlichkeit erhöht, dass Daten im Prozessor-Cache landen. In SPECjbb2015-Tests sank der Speicherverbrauch um 22 %, die CPU-Last ging um 8 % zurĂŒck und die Zahl der Garbage-Collection-VorgĂ€nge verringerte sich um 15 %. Beim Testen des JSON-Parsers verkĂŒrzte sich die AusfĂŒhrungszeit der Tests um 10 %.
  • Zur TLS-1.3-Implementierung wurde UnterstĂŒtzung fĂŒr hybride SchlĂŒsselaushandlungsschemata hinzugefĂŒgt, die den gegen Brute-Force-Angriffe auf Quantencomputern resistenten ML-KEM-Algorithmus (CRYSTALS-Kyber) mit klassischen ECDHE-Algorithmen auf Basis elliptischer Kurven kombinieren: X25519MLKEM768 (ECDHE mit der Kurve X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE mit der Kurve secp256r1 + ML-KEM-768) und SecP384r1MLKEM1024 (ECDHE mit der Kurve secp384r1 + ML-KEM-1024). Im API javax.net.SSL Diese Schemata sind standardmĂ€ĂŸig aktiviert und erfordern fĂŒr den Einsatz keine Änderungen an Anwendungen.
  • Im JDK Flight Recorder (JFR), der fĂŒr Monitoring, Profiling und Performancediagnose verwendet wird, wurde UnterstĂŒtzung fĂŒr das Bereinigen von Befehlszeilenargumenten, Anfangswerten von Umgebungsvariablen und Systemeigenschaften in den gespeicherten Diagnosedaten ergĂ€nzt. Die Änderung hilft, das Offenlegen vertraulicher Daten zu verhindern, die vom profilierten Prozess verarbeitet werden, etwa Autorisierungstoken und API-ZugangsschlĂŒssel, die ĂŒber Umgebungsvariablen ĂŒbergeben werden.
  • Die dritte Vorabversion der API Lazy Constants wurde implementiert, um mit Objekten zu arbeiten, die unverĂ€nderliche Daten enthalten und in der JVM als Konstanten behandelt werden. FĂŒr solche Objekte gelten Leistungoptimierungen, die den mit dem SchlĂŒsselwort „final“ gekennzeichneten Feldern Ă€hneln. Im Gegensatz zu „final“ trennt die neue API die Erstellung konstanter Werte von ihrer Initialisierung, garantiert, dass der Wert nur einmal initialisiert werden kann, reduziert die Startzeit von Programmen und ermöglicht die Anwendung von Optimierungen zur Konstantenfaltung (constant-folding) im Benutzercode, die zuvor nur im internen Code des JDK verwendet wurden. class Application { // War: // static final UserService USERS = new UserService(); // Jetzt kann man: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Im Musterabgleichsmechanismus wurde eine fĂŒnfte vorlĂ€ufige Möglichkeit zur Nutzung primitiver Typen (int, byte, char und andere grundlegende Typen, die keine Objekte sind) in allen Arten von Vorlagen, 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 
 }
  • Die siebte Vorabversion der API fĂŒr Structured Concurrency wurde zu Testzwecken vorgestellt. Sie vereinfacht die Entwicklung von Multithreading-Anwendungen, indem mehrere Aufgaben, die in verschiedenen Threads ausgefĂŒhrt werden, als eine einheitliche Einheit behandelt werden.
  • Die zwölfte Testimplementierung der API Vector wurde bereitgestellt. Sie bietet Funktionen fĂŒr Vektorberechnungen, die mithilfe der Vektorinstruktionen von x86_64- und AArch64-Prozessoren ausgefĂŒhrt werden und es ermöglichen, Operationen gleichzeitig auf mehrere Werte anzuwenden (SIMD). Im Unterschied zu den im JIT-Compiler HotSpot verfĂŒgbaren Möglichkeiten zur automatischen Vektorisierung skalarer Operationen erlaubt die neue API eine explizite Steuerung der Vektorisierung fĂŒr die parallele Datenverarbeitung.
  • Die dritte Vorabversion der API zum Kodieren und Dekodieren von Objekten mit kryptografischen SchlĂŒsseln, Zertifikaten und Sperrlisten widerrufener Zertifikate im PEM-Format (Pivacy-Enhanced Mail) ist verfĂŒgbar.

ZusĂ€tzlich ist die Veröffentlichung eines Updates der Plattform JavaFX 27 zur Entwicklung von Anwendungen mit grafischer BenutzeroberflĂ€che hervorzuheben. In den nĂ€chsten Stunden wird außerdem die Veröffentlichung der universellen virtuellen Maschine GraalVM 27 erwartet, die die AusfĂŒhrung von Anwendungen in JavaScript (Node.js), Python, Ruby, R, allen Sprachen fĂŒr die JVM (Java, Scala, Clojure, Kotlin) sowie Sprachen unterstĂŒtzt, fĂŒr die LLVM-Bitcode erzeugt werden kann (C, C++, Rust).

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster