Lëshimi i Java SE 26 dhe OpenJDK 26. Projekti për integrimin e mbështetjes për JavaScript dhe Python në JVM

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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster