Pas për gjashtë muaj zhvillimi, kompania Oracle publikoi platformën Java SE 26 (Java Platform, Standard Edition 26), e cila përdor projektin e hapur OpenJDK si zbatim referencë. Përveç heqjes së disa funksionaliteteve të vjetra, Java SE 26 ruan përputhshmërinë prapa me versione të kaluara të platformës Java - shumica e projekteve të Linux që janë krijuar më parë do të funksionojnë pa ndryshime në menaxhimin e versionit të ri. Ndërtesat e gatshme për instalim të Java SE 26 (JDK, JRE dhe Server JRE) janë përgatitur për Linux (x86_64, AArch64), Windows (x86_64) dhe macOS (x86_64, AArch64). Zbatimi referencë i Java SE 26, i zhvilluar në kuadër të projektit OpenJDK, është plotësisht i hapur nën licencën GPLv2 me përjashtime të GNU ClassPath, që lejojnë lidhjet dinamike me produkte tregtare.
Java SE 26 i përket kategorisë së lëshimeve me afat të zakonshëm mbështetjeje, për të cilat do të lëshohen përditësime deri në lëshimin e ardhshëm. Si një degë me afat të gjatë mbështetjeje (LTS), duhen përdorur Java SE 25, Java SE 21 ose Java SE 17, për të cilat do të lëshohen përditësime deri në vitet 2033, 2031 dhe 2029 përkatësisht (sa i përket publikut, deri në shtator 2030, 2028 dhe 2026). Mbështetje e zgjeruar për degën LTS të Java SE 8 do të vazhdojë deri në vitin 2030, ndërsa për Java SE 11 deri në vitin 2032.
Mes ndryshimeve në Java SE 26 (1, 2, 3, 4):
- ĂshtĂ« zbatuar njĂ« paralajmĂ«rim kur pĂ«rdoret refleksioni i thellĂ« pĂ«r tĂ« ndryshuar fushat e etiketuar me fjalĂ«n çelĂ«s "final". NĂ« tĂ« ardhmen, planifikohet qĂ« mundĂ«sitĂ« e pasigurta tĂ« gjuhĂ«s tĂ« çaktivizohen nĂ« mĂ«nyrĂ« default dhe, pĂ«r mĂ« tepĂ«r, tĂ« bĂ«hen fushat e etiketuar si finale tĂ« pa ndryshueshme plotĂ«sisht, duke hequr rrugĂ«n rreth pĂ«r t'i ndryshuar ato nĂ«pĂ«rmjet refleksionit tĂ« thellĂ« (API Reflection).
- API Applet (java.applet.Applet*, javax.swing.JApplet) është hequr, i cili është përdorur për të ekzekutuar aplikacione Java në shfletues. Ky API ka humbur relevancën pas ndalimit të mbështetjes për Java plugin në shfletues dhe është shpallur të jetë i vjetëruar në vitin 2021.
- ĂshtĂ« realizuar mundĂ«sia e pĂ«rdorimit tĂ« cache-t sĂ« paraparĂ« (AOT - ahead-of-time) me çdo mbledhĂ«s plehrash, duke pĂ«rfshirĂ« ZGC (Z Garbage Collector). Ky ndryshim nĂ«nkupton mbĂ«shtetje pĂ«r ngarkimin e radhitur tĂ« objekteve Java tĂ« parapara nĂ« memorie, duke pĂ«rdorur njĂ« format universale dhe tĂ« pavarur nga mbledhĂ«sit e plehrave nĂ« vend tĂ« njĂ« hartimi direkt nĂ« memorien e paraqitjeve tĂ« specificuara tĂ« cache-it. PĂ«rdorimi i AOT-cache redukton kohĂ«n e nisjes dhe pĂ«rshpejton ngrohjen (warmup) e makinerisĂ« virtuale HotSpot.
- Në API-në e HTTP Client është shtuar mbështetje për protokollin HTTP/3, duke lejuar aplikacionet dhe bibliotekat që të aksesojnë serverët përmes HTTP/3 pas ndryshimeve minimale në kod.
- Performanca e mbledhësit të plehrash G1 është rritur, duke reduktuar bllokimet për sinkronizimin e rrjedhave të aplikacionit me ato të mbledhësit të plehrash.
- ĂshtĂ« propozuar njĂ« version i dytĂ« paraprak i API-sĂ« pĂ«r kodimin dhe dekodimin e objekteve me çelĂ«sa kryesorĂ«, certifikata dhe lista tĂ« tĂ«rhequra tĂ« certifikatave, duke pĂ«rdorur formatin PEM (Privacy-Enhanced Mail).
- ĂshtĂ« propozuar pĂ«r testim njĂ« version i gjashtĂ« paraprak i API-sĂ« pĂ«r paralelizĂ«m tĂ« strukturuar (Structured Concurrency), qĂ« e thjeshton zhvillimin e aplikacioneve me shumĂ« rrjedha duke trajtuar disa detyra qĂ« kryhen nĂ« rrjedha tĂ« ndryshme si njĂ« bllok tĂ« vetĂ«m.
- ĂshtĂ« shtuar njĂ« version i dytĂ« paraprak i API-sĂ« Lazy Constants pĂ«r tĂ« punuar me objekte qĂ« pĂ«rmbajnĂ« tĂ« dhĂ«na tĂ« pandryshueshme dhe qĂ« trajtohen nĂ« JVM si konstanta. Objektet e tilla i nĂ«nshtrohen optimizimeve tĂ« performancĂ«s, tĂ« ngjashme me fushat me fjalĂ«n çelĂ«s "final". Ndryshe nga "final", API i ri ndan krijimin e vlerave tĂ« qĂ«ndrueshme dhe inicializimin e tyre, duke garantuar qĂ« vlera mund tĂ« inicohet vetĂ«m njĂ« herĂ«, duke reduktuar kohĂ«n e nisjes sĂ« programeve dhe duke lejuar aplikimin nĂ« kodin e pĂ«rdoruesit optimizimeve tĂ« pĂ«rmbledhjes sĂ« konstantave (constant-folding), tĂ« cilat mĂ« parĂ« janĂ« pĂ«rdorur vetĂ«m brenda kodit tĂ« JDK.
- Në mekanizmin e përputhjes me modelin, është propozuar një version i katërt paraprak i mundësisë së përdorimit të tipeve primitivë (int, byte, char dhe tipe të tjera bazikë, që nuk janë objekte) në të gjitha format e shabllonit, në operatorin "instanceof" dhe në blloqet "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 ⊠}
- Eshte ofruar implementimi i njëmbëdhjetë i API Vector, i cili ofron funksione për llogaritjet vektoriale, të cilat kryhen duke përdorur instrukcione vektoriale të procesorëve x86_64 dhe AArch64, dhe lejon që operacionet të aplikohen njëkohësisht në disa vlera (SIMD). Ndryshe nga mundësitë e ofruara në kompajlerin JIT HotSpot për avtokompilim të operacioneve skalarë, API i ri ofron mundësinë për të menaxhuar në mënyrë të qartë vektorizimin për përpunimin paralel të të dhënave.
Për më tepër, kompania Oracle shpalli projektin Detroit, i cili do të zhvillohet si pjesë e OpenJDK dhe do të synojë përmirësimin e portabilitetit midis Java, JavaScript dhe Python. Në kuadër të projektit, është planifikuar të ofrohet mundësia e integrimit në procesin JVM runtime me motorin JavaScript V8 dhe interpretorin CPython. Më parë, kompania Oracle kishte zhvilluar motorin JavaScript Nashorn, që funksiononte mbi makinerinë virtuale JVM, por e ndali projektin për shkak të vështirësive në zhvillimin e një implementimi të veçantë të JavaScript në kushte kur ekosistemi kryesor është i lidhur me motorin V8.
Së tepërmi, mund të përmendim publikimin e azhurnimit të platformës për krijimin e aplikacioneve me ndërfaqe grafike JavaFX 26. Në orët e ardhshme pritet gjithashtu lëshimi i makinerisë virtuale universale GraalVM 26, e cila mbështet ekzekutimin e aplikacioneve në JavaScript (Node.js), Python, Ruby, R, çdo gjuhë për JVM (Java, Scala, Clojure, Kotlin) dhe gjuhët për të cilat mund të formohet kodi LLVM (C, C++, Rust).
Burimi: opennet.ru
