Lansarea Java SE 27 și OpenJDK 27

După șase luni de dezvoltare, compania Oracle a publicat platforma Java SE 27 (Java Platform, Standard Edition 27), pentru care este folosit proiectul deschis OpenJDK ca implementare de referință. Cu excepția eliminării unor funcționalități învechite, Java SE 27 menține compatibilitatea înapoi cu versiunile anterioare ale platformei Java — cele mai multe proiecte Java scrise anterior vor funcționa fără modificări pe noua versiune. Pachetele gata de instalare pentru Java SE 27 (JDK, JRE și Server JRE) sunt pregătite pentru Linux (x86_64, AArch64), Windows (x86_64) și macOS (x86_64, AArch64). Implementarea de referință Java SE 27, dezvoltată în cadrul proiectului OpenJDK, este complet deschisă sub licența GPLv2, cu excepții GNU ClassPath, care permit legarea dinamică cu produse comerciale.

Java SE 27 este clasificat ca o versiune cu un termen normal de suport, actualizările pentru aceasta vor fi lansate până la următoarea versiune. Ca ramură cu suport pe termen lung (LTS), ar trebui folosit Java SE 25, Java SE 21 sau Java SE 17, actualizările pentru care vor fi lansate până în 2033, 2031 și 2029, respectiv (sub formă publică — până în septembrie 2030, 2028 și 2026). Suportul extins pentru ramura LTS Java SE 8 va dura până în 2030, iar Java SE 11 până în 2032.

Printre schimbările din Java SE 27 (1, 2, 3, 4):

  • În mod implicit, pentru toate mediile este activat colectorul de gunoi G1 (Garbage-First), care a fost folosit anterior pentru sistemele server. G1 este optimizat pentru utilizare pe sisteme multiprocesor cu multă memorie și pentru a echilibra previzibilitatea întârzierilor și lățimea de bandă ridicată. În timpul funcționării, G1 împarte memoria în multe regiuni mici și curăță, în primul rând, acele regiuni în care există mai multe obiecte neutilizate și mai puține date utilizate activ.
  • În HotSpot JVM, în mod implicit, sunt activate anteturile compacte pentru obiecte. Dimensiunea anteturilor pe sistemele de 64 de biți a fost redusă de la 96 la 64 de biți, ceea ce a redus consumul de memorie și a crescut probabilitatea ca datele să fie incluse în cache-ul procesorului. În testele SPECjbb2015, consumul de memorie a scăzut cu 22%, încărcarea CPU a scăzut cu 8%, iar numărul de operații de colectare a gunoiului a scăzut cu 15%. La testarea parser-ului JSON, timpul de trecere a testelor a fost redus cu 10%.
  • În implementarea TLS 1.3 a fost adăugată suportul pentru scheme hibrid de negociere a cheilor, combinând algoritmul ML-KEM (CRYSTALS-Kyber), rezistent la atacurile calculatoarelor cuantice, cu algoritmi clasici bazați pe curve elliptice ECDHE: X25519MLKEM768 (ECDHE cu curva X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE cu curva secp256r1 + ML-KEM-768) și SecP384r1MLKEM1024 (ECDHE cu curva secp384r1 + ML-KEM-1024). În API javax.net.ssl Aceste scheme sunt incluse implicit și nu necesită modificări ale aplicațiilor pentru a fi utilizate.
  • Toolkit-ul JDK Flight Recorder (JFR), folosit pentru monitorizare, profilare și diagnosticare a performanței, a adăugat suport pentru curățarea informațiilor diagnostice salvate, cum ar fi argumentele liniei de comandă, valorile inițiale ale variabilelor de mediu și proprietăților sistemului. Această modificare permite prevenirea scurgerii informațiilor confidențiale procesate de procesul profilat, cum ar fi tokenurile de autorizare și cheile de acces API transmise prin variabile de mediu.
  • A fost implementată a treia ediție preliminară a API-ului Lazy Constants pentru lucrul cu obiecte ce conțin date imuabile și care sunt tratate în JVM ca și constante. Aceste obiecte beneficiază de optimizări de performanță similare cu câmpurile cu cuvântul cheie „final”. Spre deosebire de „final”, noul API separă crearea valorilor constante și inițializarea acestora, garantând că valoarea poate fi inițializată o singură dată, reducând timpul de pornire al aplicațiilor și permițând optimizări de tip constant-folding în codul utilizatorului, folosite anterior doar în codul intern al JDK. class Application { // A fost: // static final UserService USERS = new UserService(); // Acum se poate: static final StableValue<UserService> USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • În mecanismul de potrivire cu modele a fost propusă a cincea variantă preliminară a utilizării tipurilor primitive (int, byte, char și alte tipuri de bază, care nu sunt obiecte) în toate formele de modele, în operatorul „instanceof” și în blocurile „switch”. switch (x.getStatus()) { case 0 -> „okay”; case 1 -> „warning”; case 2 -> „error”; case int i -> „status necunoscut: ” + i; } if (i instanceof byte b) { … b … }
  • Propus pentru testare a șaptea variantă preliminară a API pentru paralelismul structurat (Structured Concurrency), care facilitează dezvoltarea aplicațiilor multi-thread prin procesarea mai multor sarcini efectuate în fire diferite ca un singur bloc.
  • A fost implementată a douăsprezecea versiune de test a API Vector, care oferă funcții pentru calculul vectorial, care se efectuează utilizând instrucțiuni vectoriale ale procesoarelor x86_64 și AArch64 și permit aplicarea simultană a operațiunilor asupra mai multor valori (SIMD). Spre deosebire de capacitățile de auto-vectorizare a operațiunilor scalare oferite de compilatorul JIT HotSpot, noul API oferă posibilitatea de a gestiona explicit vectorizarea pentru procesarea paralelă a datelor.
  • Este disponibilă a treia variantă preliminară a API pentru codificarea și decodificarea obiectelor cu chei criptografice, certificate și liste de certificate revocate, utilizând formatul PEM (Privacy-Enhanced Mail).

De asemenea, merită menționată publicarea actualizării platformei pentru dezvoltarea aplicațiilor cu interfață grafică JavaFX 27. În câteva ore, se așteaptă, de asemenea, lansarea mașinii virtuale universale GraalVM 27, care suportă rularea aplicațiilor pe JavaScript (Node.js), Python, Ruby, R, orice limbaj pentru JVM (Java, Scala, Clojure, Kotlin) și limbaje pentru care se poate genera codul LLVM (C, C++, Rust).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster