Java SE 27 un OpenJDK 27 iznākšana

Pēc sešu mēnešu izstrādes uzņēmums Oracle publicēja Java SE 27 (Java Platform, Standard Edition 27) platformu, kuras etalona realizācija ir atvērts projekts OpenJDK. Izņemot dažādu novecojušu funkciju dzēšanu, Java SE 27 saglabā atpakaļ saderību ar iepriekšējiem Java platformas izlaidumiem — lielākā daļa agrāk rakstīto Java projektu darbosies bez izmaiņām jaunajā versijā. Uzstādīšanai gatavas Java SE 27 (JDK, JRE un Server JRE) pakotnes ir sagatavotas Linux (x86_64, AArch64), Windows (x86_64) un macOS (x86_64, AArch64). Java SE 27 etalona realizācija, kas izstrādāta OpenJDK projekta ietvaros, ir pilnībā atvērta saskaņā ar GPLv2 licenci ar izņēmumiem GNU ClassPath, kas atļauj dinamisku saistīšanu ar komerciāliem produktiem.

Java SE 27 pieder pie izlaišanas kategorijas ar standarta atbalsta periodu, atjauninājumi tiks izdoti līdz nākamajam izlaidumam. Kā ilga atbalsta (LTS) filiāle jāizmanto Java SE 25, Java SE 21 vai Java SE 17, kuru atjauninājumi tiks izdoti līdz 2033., 2031. un 2029. gadam attiecīgi (sabiedrības pieejamība — līdz 2030., 2028. un 2026. gadam). Paplašināts LTS atbalsts Java SE 8 filiālei ilgs līdz 2030. gadam, bet Java SE 11 — līdz 2032. gadam.

Izmaiņas Java SE 27 (1, 2, 3, 4):

  • Par noklusējumu visās apkārtnēs tiek izmantota G1 (Garbage-First) atbrīvošanas shēma, kas iepriekš tika izmantota serveru sistēmās. G1 ir optimizēta izmantošanai daudzprocesoru sistēmās ar lielu atmiņas apjomu, līdzsvarojot prognozējamību ar augstu caurlaidspēju. G1 darba procesā dalās atmiņā daudzos mazos reģionos un vispirms attīra tos reģionus, kur ir mazāk aktīvu datu un vairāk neizmantotu objektu.
  • HotSpot JVM noklusējuma iestatījumos tiek izmantoti kompakti objektu galvenie dati. Izmērs galvenajiem datiem 64 bitu sistēmās ir samazināts no 96 līdz 64 biti, tādējādi samazinot atmiņas patēriņu un palielinot iespēju, ka dati iekļaus procesora kešatmiņā. SPECjbb2015 testos atmiņas patēriņš ir samazinājies par 22%, CPU slodze ir samazinājusies par 8%, bet atbrīvošanas operāciju skaits ir samazinājies par 15%. Testējot JSON parsētāju, testu izpildes laiks ir samazinājies par 10%.
  • TLS 1.3 ieviešanā ir pievienota atbalsts hibrīdām atslēgu saskaņošanas shēmām, apvienojot ML-KEM (CRYSTALS-Kyber) algoritmu, kas ir izturīgs pret kvantu datoru ļaunprātīgu izmantošanu, ar klasiskajiem algoritmiem, kas balstīti uz eliptiskām ķiršu līknēm ECDHE: X25519MLKEM768 (ECDHE ar X25519 līkni + ML-KEM-768), SecP256r1MLKEM76 (ECDHE ar secp256r1 līkni + ML-KEM-768) un SecP384r1MLKEM1024 (ECDHE ar secp384r1 līkni + ML-KEM-1024). API javax.net.ssl Šīs shēmas ir iekļautas pēc noklusējuma un to izmantošanai nav nepieciešamas izmaiņas lietotnēs.
  • JDK Flight Recorder (JFR) rīkā, kas tiek izmantots uzraudzībai, profilēšanai un veiktspējas diagnosticēšanai, ir pievienots atbalsts datu iztīrīšanai saglabātajā diagnostikas informācijā par komandrindas argumentiem, sākotnējām vides mainīgo vērtībām un sistēmas īpašībām. Izmaiņas ļauj novērst konfidenciālu datu noplūdi, ko apstrādā profilējamais process, piemēram, autorizācijas tokeni un API piekļuves atslēgas, kas tiek nodotas caur vides mainīgajiem.
  • Realizēta trešā API Lazy Constants priekšskatījuma redakcija, lai strādātu ar objektiem, kas satur nemainīgus datus un tiek apstrādāti JVM kā konstantes. Šiem objektiem tiek piemērotas veiktspējas optimizācijas, kas ir līdzīgas laukiem ar atslēgvārdu "final". Atšķirībā no "final" jaunais API nodala konstantes vērtību radīšanu un to inicializāciju, garantējot, ka vērtība tiek inicializēta tikai vienu reizi, samazinot programmu palaišanas laiku un ļaujot izmantot lietotāju kodā optimizācijas, kas saistītas ar konstantes saliekšanu (constant-folding), kas iepriekš tika izmantotas tikai JDK iekšējā kodā. class Application { // Bijis: // static final UserService USERS = new UserService(); // Tagad var: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); }}
  • Paraugveidņu saskaņošanas mehānismā tiek piedāvāta piektā priekšskatījuma versija primitīvo tipu (int, byte, char un citi pamattipi, kas nav objekti) izmantošanas iespējām visos šādu veidņu veidos, operatorā "instanceof" un "switch" blokos. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Ieteikts testēšanai septītais API priekšlikums struktūrētajai konkurencei (Structured Concurrency), kas atvieglo daudzplūsmu lietojumprogrammu izstrādi, apstrādājot vairākus uzdevumus, kas izpildīti dažādās plūsmās, kā vienotu bloku.
  • Ieviesta divpadsmitā API Vector testēšanas versija, kas nodrošina funkcionalitāti vektoru aprēķiniem, kas tiek veikti, izmantojot x86_64 un AArch64 procesoru vektoru instrukcijas un ļauj vienlaikus piemērot operācijas vairākiem vērtībām (SIMD). Atšķirībā no HotSpot JIT kompilatora piedāvātās automātiskās vektorizācijas skalarajiem uzdevumiem, jaunais API dod iespēju skaidri kontrolēt vektorizāciju datu paralēlai apstrādei.
  • Pieejams trešais API priekšlikums objektu šifrēšanai un atšifrēšanai ar šifrēšanas atslēgām, sertifikātiem un atcelto sertifikātu sarakstiem, izmantojot PEM formātu (Pivacy-Enhanced Mail).

Papildu jāatzīmē, ka ir publicēts platformas atjauninājums JavaFX 27 grafisko interfeisu lietojumprogrammu izstrādei. Nākamo stundu laikā arī tiek gaidīta universālās virtuālās mašīnas GraalVM 27 laišana, kas atbalsta lietojumprogrammu palaišanu JavaScript (Node.js), Python, Ruby, R, jebkurā JVM valodā (Java, Scala, Clojure, Kotlin) un valodās, kurām var veidot LLVM bitkodu (C, C++, Rust).

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster