PÄc seÅ”u mÄneÅ”u izstrÄdes Oracle ir izlaidis Java SE 27 (Java Platform, Standard Edition 27), kas kÄ atsauces ievieÅ”anu izmanto atvÄrtÄ koda OpenJDK projektu. IzÅemot dažu novecojuÅ”u funkciju noÅemÅ”anu, Java SE 27 saglabÄ atpakaļsaderÄ«bu ar iepriekÅ”ÄjÄm Java platformas versijÄm ā lielÄkÄ daļa iepriekÅ” rakstÄ«to Java projektu darbosies nemainÄ«ti, darbojoties jaunajÄ versijÄ. InstalÄÅ”anai gatavas Java SE 27 (JDK, JRE un Server JRE) versijas ir sagatavotas Linux (x86_64, AArch64), Windows (x86_64) un macOS (x86_64, AArch64). IzstrÄdÄta OpenJDK projekta ietvaros, Java SE 27 atsauces implementÄcija ir pilnÄ«bÄ atvÄrtÄ koda saskaÅÄ ar GPLv2 licenci ar GNU ClassPath izÅÄmumu, kas ļauj dinamiski sasaistÄ«t ar komerciÄliem produktiem.
Java SE 27 tiek klasificÄta kÄ regulÄra atbalsta laidiens, un atjauninÄjumi tiek izlaisti lÄ«dz nÄkamajai laidienam. IlgtermiÅa atbalsta (LTS) atzaram vajadzÄtu bÅ«t Java SE 25, Java SE 21 vai Java SE 17, un atjauninÄjumi tiek izlaisti attiecÄ«gi lÄ«dz 2033., 2031. un 2029. gadam (vispÄrÄji pieejami lÄ«dz 2030., 2028. un 2026. gada septembrim). PaplaÅ”inÄtais atbalsts Java SE 8 LTS atzaram turpinÄsies lÄ«dz 2030. gadam, bet Java SE 11 - lÄ«dz 2032. gadam.
IzmaiÅas Java SE 27 (1, 2, 3, 4) ietver:
- PÄc noklusÄjuma visÄs vidÄs tiek izmantots G1 (Garbage-First) atkritumu savÄcÄjs, kas iepriekÅ” tika izmantots serveru sistÄmÄm. G1 ir optimizÄts lietoÅ”anai daudzprocesoru sistÄmÄs ar lielu atmiÅas ietilpÄ«bu un paredzamas latentuma lÄ«dzsvaroÅ”anai ar augstu caurlaidspÄju. DarbÄ«bas laikÄ G1 sadala atmiÅu daudzos mazos reÄ£ionos un pieŔķir prioritÄti tiem reÄ£ioniem, kuros ir vairÄk neizmantotu objektu un mazÄk aktÄ«vi piekļūti dati.
- HotSpot JVM pÄc noklusÄjuma izmanto kompaktas objektu galvenes. 64 bitu sistÄmÄs galvenes lielums ir samazinÄts no 96 lÄ«dz 64 bitiem, samazinot atmiÅas patÄriÅu un palielinot datu nonÄkÅ”anas procesora keÅ”atmiÅÄ iespÄjamÄ«bu. SPECjbb2015 etalontestos atmiÅas patÄriÅÅ” samazinÄjÄs par 22 %, centrÄlÄ procesora slodze samazinÄjÄs par 8 % un atkritumu savÄkÅ”anas operÄciju skaits samazinÄjÄs par 15 %. JSON parsÄtÄja testa izpildes laiks tika samazinÄts par 10 %.
- TLS 1.3 ievieÅ”ana pievieno atbalstu hibrÄ«dajÄm atslÄgu vienoÅ”anÄs shÄmÄm, kas apvieno kvantu izturÄ«go ML-KEM (CRYSTALS-Kyber) algoritmu ar klasiskajiem ECDHE eliptisko lÄ«kÅu algoritmiem: 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). Javax.net API.SSL Å Ä«s shÄmas ir iespÄjotas pÄc noklusÄjuma, un to lietoÅ”anai nav nepiecieÅ”amas nekÄdas izmaiÅas lietojumprogrammÄ.
- JDK Flight Recorder (JFR), rÄ«ks, ko izmanto veiktspÄjas uzraudzÄ«bai, profilÄÅ”anai un diagnostikai, tagad atbalsta komandrindas argumentu, vides mainÄ«go sÄkotnÄjo vÄrtÄ«bu un sistÄmas rekvizÄ«tu attÄ«rīŔanu saglabÄtajÄ diagnostikas informÄcijÄ. Å Ä«s izmaiÅas novÄrÅ” profilÄtÄ procesa apstrÄdÄto sensitÄ«vo datu, piemÄram, autorizÄcijas žetonu un API piekļuves atslÄgu, kas nodotas, izmantojot vides mainÄ«gos, noplÅ«di.
- Ir ieviesta treÅ”Ä Lazy Constants API versija darbam ar objektiem, kas satur nemainÄmus datus un tiek apstrÄdÄti kÄ konstantes JVM. Å Ädiem objektiem tiek piemÄrotas lÄ«dzÄ«gas veiktspÄjas optimizÄcijas kÄ laukiem ar atslÄgvÄrdu "final". AtŔķirÄ«bÄ no "final", jaunÄ API atdala konstantu vÄrtÄ«bu izveidi no to inicializÄcijas, garantÄ, ka vÄrtÄ«bu var inicializÄt tikai vienu reizi, samazina programmas startÄÅ”anas laiku un ļauj lietotÄja kodÄ izmantot konstantu locīŔanas optimizÄcijas, kas iepriekÅ” tika izmantotas tikai JDK iekÅ”ÄjÄ kodÄ. class Application { // IepriekÅ”: // static final UserService USERS = new UserService(); // Tagad: static final StableValue LIETOTÄJI = StableValue.of(); public static LietotÄja pakalpojuma lietotÄji() { return LIETOTÄJI.orElseSet(LietotÄja pakalpojums::new); } }
- Rakstu saskaÅoÅ”anas dzinÄjs ievieÅ” piekto versiju primitÄ«vo tipu (int, byte, char un citus neobjektu bÄzes tipus) izmantoÅ”anas iespÄjai visu veidu modeļos, instanceof operatorÄ 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 ⦠}
- TestÄÅ”anai ir izlaists septÄ«tais Structured Concurrency API melnraksts, kas vienkÄrÅ”o daudzpavedienu lietojumprogrammu izstrÄdi, apstrÄdÄjot vairÄkus uzdevumus, kas darbojas dažÄdos pavedienos, kÄ vienu vienÄ«bu.
- Ir ieviesta divpadsmitÄ Vector API testa implementÄcija. Å Ä« API nodroÅ”ina funkcijas vektoru aprÄÄ·iniem, kas veikti, izmantojot x86_64 un AArch64 procesora vektoru instrukcijas, un ļauj veikt vienlaicÄ«gas darbÄ«bas ar vairÄkÄm vÄrtÄ«bÄm (SIMD). AtŔķirÄ«bÄ no HotSpot JIT kompilatora skalÄro operÄciju automÄtiskÄs vektorizÄcijas, jaunÄ API ļauj tieÅ”i kontrolÄt vektorizÄciju paralÄlai datu apstrÄdei.
- Tagad ir pieejama treÅ”Ä API versija objektu, kas satur kriptogrÄfiskÄs atslÄgas, sertifikÄtus un sertifikÄtu atsaukÅ”anas sarakstus, kodÄÅ”anai un dekodÄÅ”anai, izmantojot PEM (ar privÄtuma aizsardzÄ«bu uzlabota pasta) formÄtu.
TurklÄt ar prieku paziÅojam par JavaFX 27 platformas atjauninÄjuma izlaiÅ”anu grafisko lietotÄja saskarÅu lietojumprogrammu izveidei. TuvÄkajÄs stundÄs gaidÄma arÄ« universÄlÄs virtuÄlÄs maŔīnas GraalVM 27 izlaiÅ”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 Ä£enerÄt LLVM bitkodu (C, C++, Rust).
Avots: opennet.ru
