Lëshimi i Java SE 24 dhe OpenJDK 24

Pas gjashtĂ« muajsh zhvillimi, kompania Oracle publikoi platformĂ«n Java SE 24 (Java Platform, Standard Edition 24), pĂ«r tĂ« cilĂ«n pĂ«rdoret projekti i hapur OpenJDK si realizimi standard. PĂ«rveç eliminimit tĂ« disa mundĂ«sive tĂ« vjetra, Java SE 24 ruan pĂ«rputhshmĂ«rinĂ« e prapambetur me lĂ«shimet e mĂ«parshme tĂ« platformĂ«s Java — shumica e projekteve tĂ« shkruara mĂ« parĂ« nĂ« Java do tĂ« funksionojnĂ« pa ndryshime kur ekzekutohen nĂ«n menaxhimin e versionit tĂ« ri. Blerjet gati pĂ«r instalim tĂ« Java SE 24 (JDK, JRE dhe Server JRE) janĂ« pĂ«rgatitur pĂ«r Linux (x86_64, AArch64), Windows (x86_64) dhe macOS (x86_64, AArch64). Realizimi standard i Java SE 24, i zhvilluar nĂ« kuadĂ«r tĂ« projektit OpenJDK, Ă«shtĂ« plotĂ«sisht i hapur nĂ«n licencĂ«n GPLv2 me pĂ«rjashtime nga GNU ClassPath, qĂ« lejojnĂ« lidhjen dinamike me produktet komerciale.

Java SE 24 Ă«shtĂ« klasifikuar si njĂ« version me mbĂ«shtetje tĂ« zakonshme, me pĂ«rmirĂ«sime qĂ« do tĂ« lĂ«shohen deri nĂ« versionin e ardhshĂ«m. Si njĂ« degĂ« me mbĂ«shtetje afatgjatĂ« (LTS), duhet pĂ«rdorur Java SE 21 ose Java SE 17, pĂ«rmirĂ«simet e tĂ« cilave do tĂ« lĂ«shohen deri nĂ« vitet 2031 dhe 2029 pĂ«rkatĂ«sisht (publik — deri nĂ« vitet 2028 dhe 2026). MbĂ«shtetje e zgjeruar pĂ«r degĂ«n LTS tĂ« Java SE 8 do tĂ« zgjasĂ« deri nĂ« vitin 2030, ndĂ«rsa Java SE 11 deri nĂ« vitin 2032. LĂ«shimi i ardhshĂ«m LTS do tĂ« jetĂ« lĂ«shimi vjeshtor i Java SE 25.

Mes risive të paraqitura në Java SE 24 janë:

  • ËshtĂ« propozuar njĂ« modalitet eksperimental i punĂ«s sĂ« mbledhĂ«sit tĂ« mbeturinave Shenandoah, ku trajtohen veçmas objektet e vjetra dhe ato tĂ« sapo krijuara pĂ«r tĂ« rritur efikasitetin e pastrimit tĂ« objekteve me kohĂ« tĂ« shkurtĂ«r jete. Ky modalitet siguron njĂ« kapacitet mĂ« tĂ« parashikueshĂ«m, qĂ«ndrueshmĂ«ri ndaj ndryshimeve tĂ« ngarkesĂ«s dhe njĂ« ulje tĂ« konsumit tĂ« memories gjatĂ« mbledhjes sĂ« mbeturinave. Planifikuesi Shenandoah Ă«shtĂ« nĂ« fokus tĂ« reduktimit tĂ« kohĂ«ve tĂ« ndalesave gjatĂ« mbledhjes sĂ« mbeturinave pĂ«rmes kryerjes sĂ« njĂ« sasie mĂ« tĂ« madhe pune paralelisht me ekzekutimin e aplikacioneve Java.
  • NĂ« HotSpot JVM, Ă«shtĂ« implementuar mbĂ«shtetje eksperimentale pĂ«r titujt kompaktĂ« tĂ« objekteve, tĂ« cilĂ«t nĂ« sistemet 64-bit janĂ« reduktuar nga 96 nĂ« 64 bit (nga 12 nĂ« 8 byte). Reduktimi i madhĂ«sisĂ« sĂ« titujve lejon zvogĂ«limin e madhĂ«sisĂ« sĂ« grumbullit dhe rritjen e efikasitetit tĂ« punĂ«s sĂ« caches.
  • NĂ« mbledhĂ«sin e mbetjeve G1, janĂ« thjeshtuar implementimet e barrierave qĂ« ndjekin qasjen e aplikacionit nĂ« memorie. NĂ« versionin e ri, operacionet e zgjerimit tĂ« barrierave janĂ« kaluar nĂ« njĂ« fazĂ« mĂ« tĂ« vonĂ« tĂ« pĂ«rpunimit nĂ« C2 JIT. Testet e kryera tregojnĂ« se njĂ« kalim i tillĂ« lejon njĂ« reduktim tĂ« kostove tĂ« JIT-kompilatorit C2 prej 10-20% nĂ« varĂ«si tĂ« aplikacionit.
  • ËshtĂ« shtuar API pĂ«r pĂ«rdorimin e funksioneve kriptografike tĂ« formimit tĂ« çelĂ«sit (KDF, funksioni i derivatĂ«s sĂ« çelĂ«sit), tĂ« cilat lejojnĂ« formimin e çelĂ«save shtesĂ« me gjatĂ«si tĂ« nevojshme mbi bazĂ«n e çelĂ«sit sekret (p.sh., fjalĂ«kalimit) dhe njĂ« grumbulli tĂ« rastĂ«sishĂ«m tĂ« tĂ« dhĂ«nave. API KDF aktualisht ka statusin paraprak.
  • Shtuar mundĂ«sia e ngarkimit dhe kompozimit tĂ« klasave nĂ« mĂ«nyrĂ« tĂ« parashikuar (Ahead-of-Time). Kjo ndryshim lejon tĂ« pĂ«rshpejtojĂ« ngjalljen e HotSpot JVM duke siguruar klasat qĂ« pĂ«rdoren nĂ« aplikacion nĂ« njĂ« gjendje tĂ« ngarkuar dhe tĂ« kompozuar. GjatĂ« ngjitjes sĂ« parĂ« tĂ« aplikacionit, gjendja e tĂ« gjitha klasave ruhet nĂ« cache dhe gjatĂ« ngjitjeve tĂ« mĂ«vonshme pĂ«rdoret pĂ«r tĂ« pĂ«rshpejtuar ngarkimin.
  • Shtuar API Class-File pĂ«r tĂ« analizuar, gjeneruar dhe trasformuar skedarĂ«t me klasat Java.

    ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { if (!(ce instanceof MethodModel mm && mm.methodName().stringValue().startsWith(«debug»))) { classBuilder.with(ce); } } });

  • Shtesa e API Stream tĂ« avancuar, e cila mbĂ«shtet pĂ«rcaktimin e operacioneve ndĂ«rmjetĂ«se tĂ« personalizuara, tĂ« cilat mund tĂ« jenĂ« tĂ« dobishme nĂ« raste kur operacionet ndĂ«rmjetĂ«se ekzistuese tĂ« ndĂ«rtuara nuk janĂ« tĂ« mjaftueshme pĂ«r transformimin e dĂ«shiruar tĂ« tĂ« dhĂ«nave. MenaxherĂ«t e personalizuar lidhen pĂ«rmes operacionit tĂ« ri ndĂ«rmjetĂ«s Stream::gather(Gatherer), i cili proceson elementet e rrjedhĂ«s duke iu aplikuar menaxherin e caktuar nga pĂ«rdoruesi. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(new WindowFixed(3)).toList() $1 == [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • Kjo Ă«shtĂ« realizimi i katĂ«rt paraprak i vlerave tĂ« kufizuara (Scoped Values), tĂ« cilat lejojnĂ« ndarjen e tĂ« dhĂ«nave tĂ« pandryshueshme nĂ« rrjedha dhe shkĂ«mbimin e efikas tĂ« tĂ« dhĂ«nave midis nĂ«n-rrjedhave (vlerat trashĂ«gohen). Vlerat e kufizuara po zhvillohen si njĂ« zĂ«vendĂ«sim pĂ«r mekanizmin e variablave lokalĂ« tĂ« rrjedhĂ«s (thread-local variables) dhe janĂ« mĂ« efikase kur pĂ«rdoren njĂ« numĂ«r shumĂ« tĂ« madh tĂ« rrjedhave virtuale (mijĂ«ra e miliona rrjedha). Dallimi kryesor mes vlerave tĂ« kufizuara dhe variablave lokalĂ« tĂ« rrjedhĂ«s Ă«shtĂ« se tĂ« parat shkruhen njĂ« herĂ«, nuk mund tĂ« ndryshohen mĂ« vonĂ« dhe mbeten tĂ« aksesueshme vetĂ«m nĂ« kohĂ«n e ekzekutimit tĂ« rrjedhĂ«s.
  • NĂ« mekanizmat e pĂ«rputhjes janĂ« shtuar mbĂ«shtetje paraprake pĂ«r pĂ«rdorimin e tipeve primitive (int, byte, char dhe tipe tĂ« tjera bazike qĂ« nuk janĂ« objekte) nĂ« tĂ« gjitha llojet e shablloneve, 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 
 }
  • U ofruar implementimi i nĂ«ntĂ« tĂ« paracaktuar i API Vector, i cili ofron funksionalitete pĂ«r llogaritjet vektorike, tĂ« cilat kryhen duke pĂ«rdorur udhĂ«zimet vektorike tĂ« procesorĂ«ve x86_64 dhe AArch64 dhe lejojnĂ« aplikimin e operacioneve nĂ« tĂ« njĂ«jtĂ«n kohĂ« nĂ« shumĂ« vlera (SIMD). Ndryshe nga mundĂ«sitĂ« e ofruara nga kompilatori JIT HotSpot pĂ«r avoketizimin automatik tĂ« operacioneve skalar, API i ri ofron mundĂ«sinĂ« pĂ«r tĂ« menaxhuar drejtpĂ«rdrejt vektorizimin pĂ«r pĂ«rpunimin paralel tĂ« tĂ« dhĂ«nave.
  • ËshtĂ« implementuar mbĂ«shtetje pĂ«r sinkronizimin e rrjedhave virtuale pa i lidhur ato (pinning) me rrjedhat e lidhura me platformĂ«n. Rrjedhat virtuale nĂ« metodĂ«n ose shprehjen e sinkronizuar nĂ« gjendje bllokimi tani lirojnĂ« rrjedhĂ«n e tyre tĂ« platformĂ«s, duke lejuar qĂ« rrjedhat e tjera virtuale ta pĂ«rdorin atĂ«, gjĂ« qĂ« rrit ndjeshĂ«m numrin e rrjedhave virtuale tĂ« disponueshme dhe pĂ«rmirĂ«son shkallĂ«zimin e aplikacioneve qĂ« pĂ«rdorin multithreading.
  • Shtuar varianti i tretĂ« paraprak i mundĂ«sive, qĂ« lejon specifikimin e shprehjeve nĂ« ndihmĂ«sit para thirrjes super(
), e pĂ«rdorur pĂ«r thirrjen e qartĂ« tĂ« ndihmĂ«sit tĂ« klasĂ«s prind nga ndihmĂ«si i klasĂ«s sĂ« trashĂ«guar, nĂ«se kĂ«to shprehje nuk i referohen instancĂ«s sĂ« ndihmĂ«sit tĂ« krijuar nga ndihmĂ«sit. class Outer { void hello() { System.out.println("Hello"); } class Inner { Inner() { hello(); super(); } } }
  • NĂ« utilitarin jlink Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r krijimin e imazheve run-time pa pĂ«rdorimin e skedave JMOD, qĂ« lejon reduktimin e madhĂ«sisĂ« sĂ« JDK-sĂ« pĂ«r rreth 25%.
  • Shtuar varianti i dytĂ« paraprak pĂ«r pĂ«rdorimin e njĂ« shprehjeje "import module M" pĂ«r tĂ« importuar menjĂ«herĂ« tĂ« gjithĂ« paketat e eksportuara nga moduli i specifikuar. Ky ndryshim e thjeshton ndjeshĂ«m ripĂ«rdorimin e bibliotikave modulare, duke lejuar lidhjen e bibliotikave dhe klasave pa pĂ«rcaktimin e vendit tĂ« tyre nĂ« hierarkinĂ« e paketave. PĂ«r shembull, specifikimi i "import module java.base" do tĂ« çojĂ« nĂ« importimin e tĂ« gjitha 54 paketave qĂ« pĂ«rfshihen nĂ« modul java.base, tĂ« cilat mĂ« parĂ« do tĂ« duhej tĂ« pĂ«rmendeshin veçmas ("import java.io.*", "import java.util.*", etj.).
  • E implementuar versionin e katĂ«rt tĂ« paracaktuar tĂ« klasave tĂ« shpallura nĂ« mĂ«nyrĂ« tĂ« fshehtĂ« dhe instanceve pa emĂ«r tĂ« metodĂ«s «main», nĂ« tĂ« cilat mund tĂ« kaloni pa shpallje public/static, kalimin e njĂ« vargu argumentesh dhe entitete tĂ« tjera qĂ« lidhen me shpalljen e klasĂ«s. // ishte public class HelloWorld { public static void main(String[] args) { System.out.println(«Hello world!»); } } // tani mund tĂ« jetĂ« void main() { System.out.println(«Hello, World!»); }
  • Propozuar pĂ«r testim Ă«shtĂ« varianti i katĂ«rt i paracaktuar i API pĂ«r parametrizimin e strukturuar (Structured Concurrency), qĂ« thjeshton zhvillimin e aplikacioneve me shumĂ« thread duke trajtuar disa detyra qĂ« ekzekutohen nĂ« thread tĂ« ndryshme si njĂ« bllok tĂ« vetĂ«m.
  • NĂ« API KeyPairGenerator, Signature dhe KeyFactory Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r algoritmet ML-KEM (CRYSTALS-Kyber) dhe ML-DSA (CRYSTALS-Dilithium), tĂ« standardizuara nga Instituti KombĂ«tar i Standardeve dhe Teknologjive tĂ« SHBA (NIST) dhe tĂ« qĂ«ndrueshme ndaj provimeve nĂ« kompjuterĂ«t kuantikĂ«. KĂ«ta algoritme pĂ«rdorin metoda kriptografike tĂ« bazuara nĂ« zgjidhjen e problemeve tĂ« teorisĂ« sĂ« rrjetave, koha e zgjidhjes sĂ« tĂ« cilave nuk ndryshon nĂ« kompjuterĂ«t zakonshĂ«m dhe kuantikĂ«.
  • NĂ« mbledhĂ«sin e mbetjeve ZGC, mbĂ«shtetja pĂ«r modin jo-gjenerues, i cili nuk ndan pĂ«rpunimin e objekteve "tĂ« vjetra" dhe "tĂ« reja", Ă«shtĂ« hequr. Duke filluar nga Java SE 23, moda gjeneruese ZGC aplikohet si parazgjedhje.
  • Shtuar Ă«shtĂ« dalja e paralajmĂ«rimeve pĂ«r pĂ«rdorimin e API JNI (Java Native Interface) dhe FFM (Foreign Function & Memory) me synimin pĂ«r tĂ« pĂ«rgatitur zhvilluesit pĂ«r kufizimin e aksesit nĂ« kĂ«to API pĂ«r shkak tĂ« pĂ«rfshirjes nĂ« njĂ« nga lĂ«shimet e ardhshme tĂ« modit tĂ« sigurisĂ«, i cili me parazgjedhje ndalon ndĂ«rveprimin me kodin natyror.
  • Ă«shtĂ« pĂ«rfshirĂ« dalja e njĂ« paralajmĂ«rimi kur pĂ«rdoren metodat e qasjes nĂ« kujtesĂ« tĂ« jashtme (jashtĂ« JVM), tĂ« ofruara nga klasa sun.misc.Unsafe. PĂ«r qasjen nĂ« kujtesĂ«n jashtĂ« heap-it dhe ndĂ«rlidhjen me kodin e jashtĂ«m rekomandohet pĂ«rdorimi i API VarHandle. NĂ« lĂ«shimin e kaluar, mbĂ«shtetja pĂ«r sun.misc.Unsafe u shpall e vjetĂ«ruar.
  • Menaxheri i SigurisĂ« Ă«shtĂ« çaktivizuar, i cili ka humbur relevancĂ« dhe Ă«shtĂ« bĂ«rĂ« i papĂ«rdorshĂ«m pas ndĂ«rprerjes sĂ« mbĂ«shtetjes pĂ«r plugin-in e shfletuesit. Menaxheri i SigurisĂ« Ă«shtĂ« klasifikuar si i vjetĂ«ruar nĂ« Java 17. NĂ« njĂ« nga lĂ«shimet e ardhshme planifikohet tĂ« hiqet plotĂ«sisht kodi i Menaxherit tĂ« SigurisĂ«.
  • Kodi i mbĂ«shtetjes pĂ«r platformĂ«n 32-bit tĂ« sistemit operativ Windows nĂ« sistemet x86 Ă«shtĂ« fshirĂ«. ËshtĂ« shpallur i vjetruar dhe Ă«shtĂ« planifikuar pĂ«r t'u fshirĂ« porti Java pĂ«r sistemet 32-bit x86 (do tĂ« ndĂ«rpritet mbĂ«shtetja pĂ«r Linux nĂ« sistemet 32-bit x86).

Gjithashtu, mund të theksohet publikimi i azhurnimit të platformës për krijimin e aplikacioneve me ndërfaqe grafike JavaFX 24 dhe versioni i ri i makinerisë virtuale universale GraalVM, që mbështet ekzekutimin e aplikacioneve në JavaScript (Node.js), Python, Ruby, R, çdo gjuhë për JVM (Java, Scala, Clojure, Kotlin) dhe gjuhë për të cilat mund të formohet bitcode LLVM (C, C++, Rust). Përveç mbështetjes për JDK 24, në versionin e ri të GraalVM janë bërë optimizime për detyra të lidhura me mësimin e makinave, është përmirësuar mbështetja për kompilimin e kodit Java-byte në kodin makina, është shtuar mekanizmi SkipFlow për të skaluar madhësinë e skedarëve ekzekutues dhe për të reduktuar kohën e kompilimit.

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster