Išleistas Java SE 27 ir OpenJDK 27

Po šešių mėnesių kūrimo „Oracle“ išleido „Java SE 27“ („Java Platform“, „Standard Edition 27“), kuri kaip etaloninį įgyvendinimą naudoja atvirojo kodo „OpenJDK“ projektą. Išskyrus kai kurių nebenaudojamų funkcijų pašalinimą, „Java SE 27“ išlaiko atgalinį suderinamumą su ankstesnėmis „Java“ platformos versijomis – dauguma anksčiau parašytų „Java“ projektų veiks nepakeisti, kai bus paleista naujoje versijoje. Paruoštos diegti „Java SE 27“ (JDK, JRE ir Server JRE) versijos yra paruoštos... Linux (x86_64, AArch64), Windows (x86_64) ir macOS (x86_64, AArch64). „OpenJDK“ projekto sukurtas „Java SE 27“ etaloninis įgyvendinimas yra visiškai atvirojo kodo pagal GPLv2 licenciją su GNU ClassPath išimtimi, kuri leidžia dinamiškai susieti su komerciniais produktais.

„Java SE 27“ priskiriama įprasto palaikymo leidimams, o atnaujinimai išleidžiami iki kito leidimo. Ilgalaikės palaikymo (LTS) šaka turėtų būti „Java SE 25“, „Java SE 21“ arba „Java SE 17“, o atnaujinimai išleidžiami atitinkamai iki 2033, 2031 ir 2029 m. (paprastai pasiekiami iki 2030, 2028 ir 2026 m. rugsėjo mėn.). Išplėstinis „Java SE 8 LTS“ šakos palaikymas tęsis iki 2030 m., o „Java SE 11“ – iki 2032 m.

„Java SE 27“ (1, 2, 3, 4) pakeitimai apima:

  • Pagal numatytuosius nustatymus visose aplinkose naudojamas G1 (Garbage-First) šiukšlių surinkėjas, anksčiau naudotas serverių sistemose. G1 yra optimizuotas naudoti daugiaprocesorinėse sistemose su didele atminties talpa ir norint subalansuoti nuspėjamą delsą su dideliu pralaidumu. Veikimo metu G1 padalija atmintį į daugelį mažų regionų ir teikia pirmenybę tiems regionams, kuriuose yra daugiau nenaudojamų objektų ir mažiau aktyviai pasiekiamų duomenų.
  • „HotSpot JVM“ pagal numatytuosius nustatymus naudoja kompaktiškas objektų antraštes. 64 bitų sistemose antraštės dydis sumažintas nuo 96 iki 64 bitų, todėl sumažėja atminties sunaudojimas ir padidėja tikimybė, kad duomenys pateks į procesoriaus talpyklą. „SPECjbb2015“ lyginamuosiuose testuose atminties sunaudojimas sumažėjo 22 %, procesoriaus apkrova sumažėjo 8 %, o šiukšlių surinkimo operacijų skaičius sumažėjo 15 %. JSON analizatoriaus bandymo laikas sutrumpėjo 10 %.
  • TLS 1.3 įdiegimas prideda palaikymą hibridinėms raktų sutarčių schemoms, kurios sujungia kvantiniam atsparumui skirtą ML-KEM (CRYSTALS-Kyber) algoritmą su klasikiniais ECDHE elipsinių kreivių algoritmais: X25519MLKEM768 (ECDHE su X25519 kreive + ML-KEM-768), SecP256r1MLKEM76 (ECDHE su secp256r1 kreive + ML-KEM-768) ir SecP384r1MLKEM1024 (ECDHE su secp384r1 kreive + ML-KEM-1024). „javax.net“ API.ssl Šios schemos yra įjungtos pagal numatytuosius nustatymus ir nereikalauja jokių programos pakeitimų, kad jas būtų galima naudoti.
  • „JDK Flight Recorder“ (JFR) – įrankis, naudojamas našumui stebėti, profiliuoti ir diagnostikai, dabar palaiko komandinės eilutės argumentų, pradinių aplinkos kintamųjų reikšmių ir sistemos ypatybių valymą išsaugotoje diagnostikos informacijoje. Šis pakeitimas apsaugo nuo profiliuoto proceso apdorojamų jautrių duomenų, pvz., autorizacijos žetonų ir API prieigos raktų, perduodamų per aplinkos kintamuosius, nutekėjimo.
  • Įdiegta trečioji „Lazy Constants“ API versija darbui su objektais, kuriuose yra nekintamų duomenų ir kurie JVM traktuojami kaip konstantos. Tokiems objektams taikomi panašūs našumo optimizavimai, kaip ir laukams su raktiniu žodžiu „final“. Skirtingai nuo „final“, naujoji API atskiria konstantų reikšmių kūrimą nuo jų inicializavimo, garantuoja, kad reikšmę galima inicijuoti tik vieną kartą, sutrumpina programos paleidimo laiką ir leidžia naudoti konstantų lankstymo optimizavimus, anksčiau naudotus tik JDK vidiniame kode, vartotojo kode. class Application { // Anksčiau: // static final UserService USERS = new UserService(); // Dabar: static final StableValue VARTOTOJAI = StableValue.of(); public static VartotojoPaslauga vartotojai() { return VARTOTOJAI.orElseSet(VartotojoPaslauga::new); } }
  • Šablonų atitikimo variklis pristato penktąją galimybę naudoti primityvius tipus (int, byte, char ir kitus neobjektinius bazinius tipus) visų tipų šablonuose, operatoriuje instanceof ir switch blokuose. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Testavimui išleistas septintasis „Structured Concurrency API“ variantas, kuris supaprastina daugiagijas programas, kelias užduotis, veikiančias skirtingose ​​gijose, traktuodamas kaip vieną vienetą.
  • Įdiegtas dvyliktas „Vector API“ testinis įgyvendinimas. Ši API teikia funkcijas vektorių skaičiavimams, atliekamiems naudojant x86_64 ir AArch64 procesorių vektorių instrukcijas, ir leidžia vienu metu atlikti operacijas su keliomis reikšmėmis (SIMD). Skirtingai nuo „HotSpot JIT“ kompiliatoriaus automatinio skaliarinių operacijų vektorizavimo, naujoji API leidžia aiškiai valdyti vektorizavimą lygiagrečiam duomenų apdorojimui.
  • Trečiasis API variantas jau prieinamas objektams, kuriuose yra kriptografiniai raktai, sertifikatai ir sertifikatų atšaukimo sąrašai, koduoti ir dekoduoti naudojant PEM (privatumo užtikrinimu patobulinto pašto) formatą.

Be to, džiaugiamės galėdami pranešti apie „JavaFX 27“ platformos, skirtos grafinės vartotojo sąsajos programoms kurti, atnaujinimo išleidimą. Artimiausiomis valandomis taip pat tikimasi išleisti universalią virtualią mašiną „GraalVM 27“, kuri palaiko programų paleidimą „JavaScript“ (Node.js), „Python“, „Ruby“, R, bet kuria JVM kalba („Java“, „Scala“, „Clojure“, „Kotlin“) ir kalbomis, kurioms galima generuoti LLVM bitų kodą (C, C++, „Rust“).

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster