Vydanie Java SE 27 a OpenJDK 27

Po šiestich mesiacoch vývoja spoločnosť Oracle zverejnila platformu Java SE 27 (Java Platform, Standard Edition 27), ktorej referenčná implementácia je založená na otvorenom projekte OpenJDK. Okrem odstránenia niektorých zastaraných funkcií v Java SE 27 ostáva spätná kompatibilita s predchádzajúcimi vydaniami platformy Java - väčšina predtým napísaných Java projektov bude bez zmien fungovať na novej verzii. Verzie Java SE 27 (JDK, JRE a Server JRE) sú pripravené na inštaláciu pre Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenčná implementácia Java SE 27, vyvinutá v rámci projektu OpenJDK, je úplne otvorená pod licenciou GPLv2 s výnimkami GNU ClassPath, ktoré umožňujú dynamické prepojenie s komerčnými produktmi.

Java SE 27 patrí do kategórie vydaní s bežnou dobou podpory, pričom aktualizácie budú vydávané až do nasledujúceho vydania. Pre dlhodobú podporu (LTS) sa odporúča používať Java SE 25, Java SE 21 alebo Java SE 17, pre ktoré budú aktualizácie vydávané do rokov 2033, 2031 a 2029, pričom verejne dostupné budú do septembra 2030, 2028 a 2026. Rozšírená podpora LTS vetvy Java SE 8 potrvá do roku 2030, a Java SE 11 do roku 2032.

Medzi zmenami v Java SE 27 (1, 2, 3, 4):

  • Pre všetky prostredia je predvolene aktivovaný garbage collector G1 (Garbage-First), ktorý bol predtým používaný pre serverové systémy. G1 je optimalizovaný na použitie na viacerých procesorových systémoch s veľkým objemom pamäte a vyvažuje predvídateľnosť oneskorenia a vysokú priepustnosť. Počas prevádzky G1 delí pamäť na množstvo malých regiónov a primárne čistí tie regióny, kde je viac nevyužitých objektov a menej aktívne používaných dát.
  • V HotSpot JVM sú predvolene aktivované kompaktné hlavičky objektov. Veľkosť hlavičiek na 64-bitových systémoch bola zmenšená z 96 na 64 bitov, čo znížilo spotrebu pamäte a zvýšilo pravdepodobnosť, že sa dáta dostanú do procesorovej cache. V testoch SPECjbb2015 sa spotreba pamäte znížila o 22%, záťaž na CPU sa znížila o 8%, a počet operácií garbage collection sa znížil o 15%. Pri testovaní JSON parsera sa doba vykonávania testov skrátila o 10%.
  • Do implementácie TLS 1.3 bola pridaná podpora hybridných schém na dohadovanie kľúčov, kombinujúc algoritmus ML-KEM (CRYSTALS-Kyber), odolný voči kvantovým počítačom, s klasickými algoritmami založenými na eliptických krivkách ECDHE: X25519MLKEM768 (ECDHE s krivkou X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE s krivkou secp256r1 + ML-KEM-768) a SecP384r1MLKEM1024 (ECDHE s krivkou secp384r1 + ML-KEM-1024). V API javax.net.ssl Tieto schémy sú predvolene zahrnuté a na ich použitie nie je potrebná zmena aplikácií.
  • Do nástroja JDK Flight Recorder (JFR), používaného na monitorovanie, profilovanie a diagnostiku výkonu, bola pridaná podpora čistenia v ukladaných diagnostických informáciách argumentov príkazového riadku, počiatočných hodnôt premenných prostredia a systémových vlastností. Zmena umožňuje predchádzať úniku dôverných údajov, ktoré spracováva profilovaný proces, ako sú prenášané cez premenné prostredia autentifikačné tokeny a kľúče prístupu k API.
  • Bola implementovaná tretia predbežná verzia API Lazy Constants na prácu s objektmi obsahujúcimi nemenné údaje a spracovávanými v JVM ako konštanty. Na tieto objekty sa aplikujú optimalizácie výkonu, podobné poliam s kľúčovým slovom „final“. Na rozdiel od „final“ nové API oddeľuje vytváranie stálych hodnôt a ich inicializáciu, zaručuje, že hodnota môže byť inicializovaná iba raz, skracuje čas spustenia programov a umožňuje používať v používateľskom kóde optimalizácie skracovania konštánt (constant-folding), ktoré sa predtým používali iba vo vnútornej kóde JDK. class Application { // Bolo: // static final UserService USERS = new UserService(); // Teraz je možné: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • V mechanizme vzorového porovnávania bol navrhnutý piaty predbežný variant možnosti používania primitívnych typov (int, byte, char a ďalšie základné typy, ktoré nie sú objektmi) vo všetkých typoch šablón, v operátore „instanceof“ a v blokoch „switch“. switch (x.getStatus()) { case 0 -> „okay“; case 1 -> „warning“; case 2 -> „error“; case int i -> „unknown status: “ + i; } if (i instanceof byte b) { … b … }
  • Navrhnutá na testovanie siedma predbežná verzia API pre štrukturovaný paralelizmus (Structured Concurrency), ktorá uľahčuje vývoj viaccievkových aplikácií spracovaním niekoľkých úloh vykonávaných v rôznych vláknach ako jedného bloku.
  • Realizovaná dvanásta testovacia implementácia API Vector, ktorá poskytuje funkcie pre vektorové výpočty, ktoré sa vykonávajú pomocou vektorových inštrukcií procesorov x86_64 a AArch64 a umožňujú súčasne aplikovať operácie na viaceré hodnoty (SIMD). Na rozdiel od možností automatizovanej vektorizácie skalárnych operácií poskytovaných v JIT-kompilátore HotSpot, nové API umožňuje explicitne riadiť vektorizáciu pre paralelné spracovanie údajov.
  • K dispozícii je tretia predbežná verzia API pre kódovanie a dekódovanie objektov s kryptografickými kľúčmi, certifikátmi a zoznamami odvolaných certifikátov, pričom sa používa formát PEM (Pivacy-Enhanced Mail).

Ďalej je potrebné spomenúť publikovanie aktualizácie platformy na vytváranie aplikácií s grafickým rozhraním JavaFX 27. V najbližších hodinách sa očakáva aj vydanie univerzálnej virtuálnej mašiny GraalVM 27, ktorá podporuje spúšťanie aplikácií v JavaScripte (Node.js), Pythone, Ruby, R, akýchkoľvek jazykoch pre JVM (Java, Scala, Clojure, Kotlin) a jazykoch, pre ktoré je možné vytvárať bitcode LLVM (C, C++, Rust).

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster