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

Pas 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 realizimin referues. Përveç heqjes së disa mundësive të vjetra, Java SE 26 ruan përputhshmërinë me versionet e kaluara të platformës Java - shumica e projekteve Java të shkruara më parë do të funksionojnë pa ndryshime nën menaxhimin e versionit të ri. Versionet 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). Realizimi referues 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 nga GNU ClassPath, të cilat lejojnë lidhjen dinamike me produkte komerciale.

Java SE 26 është klasifikuar si një lëshim me mbështetje të zakonshme, përditësimet e të cilit do të lëshohen deri në lëshimin e ardhshëm. Si një degë me mbështetje afatgjatë (LTS), duhet të përdoret Java SE 25, Java SE 21 ose Java SE 17, përditësimet e të cilave do të lëshohen deri në vitet 2033, 2031 dhe 2029 përkatësisht (të qasshme 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 Java SE 11 deri në vitin 2032.

Ndër ndryshimet në Java SE 26 (1, 2, 3, 4):

  • NĂ« implementim Ă«shtĂ« njĂ« njoftim kur pĂ«rdoren refleksionet e thella pĂ«r tĂ« ndryshuar fushat e shĂ«nuara me fjalĂ«n kyçe "final". NĂ« tĂ« ardhmen planifikohet qĂ« mundĂ«sitĂ« e pasigurta tĂ« gjuhĂ«s tĂ« çaktivizohen si tĂ« parazgjedhura dhe, pĂ«rveç tĂ« tjerash, tĂ« bĂ«hen fushat e shĂ«nuara si final plotĂ«sisht tĂ« pandryshueshme, duke hequr rrugĂ«n anĂ«sore pĂ«r ndĂ«rrimin e tyre pĂ«rmes refleksionit tĂ« thellĂ« (API Reflection).
  • API Applet (java.applet.Applet*, javax.swing.JApplet) Ă«shtĂ« hequr, i cili Ă«shtĂ« pĂ«rdorur pĂ«r tĂ« nisur aplikacionet Java nĂ« shfletues. Ky API ka humbur aktualitetin pas ndĂ«rprerjes sĂ« mbĂ«shtetjes pĂ«r plugin-in Java pĂ«r shfletuesit dhe Ă«shtĂ« shpallur i vjetruar nĂ« vitin 2021.
  • ËshtĂ« zbatuar mundĂ«sia e pĂ«rdorimit tĂ« caches sĂ« formuar paraprakisht (AOT – ahead-of-time) me çdo thjeshtues plehĂ«rash, duke pĂ«rfshirĂ« ZGC (Z Garbage Collector). Ky ndryshim nĂ«nkupton mbĂ«shtetje pĂ«r ngarkimin e pĂ«rshirĂ« tĂ« objekteve Java tĂ« ruajtura nĂ« memorje, duke pĂ«rdorur njĂ« format universale dhe tĂ« pavarur nga thjeshtuesit e plehĂ«rave, nĂ« vend tĂ« hartimit tĂ« drejtpĂ«rdrejtĂ« nĂ« memorje tĂ« pĂ«rfaqĂ«simeve specifike tĂ« caches. PĂ«rdorimi i caches AOT zvogĂ«lon kohĂ«n e nisjes dhe pĂ«rshpejton aktualizimin (warmup) tĂ« makinerisĂ« virtuale HotSpot.
  • NĂ« API HTTP Client Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r protokollin HTTP/3, i cili lejon aplikacioneve dhe bibliotekave tĂ« lidhen me serverĂ«t pĂ«rmes HTTP/3 pas ndryshimeve minimale nĂ« kod.
  • ËshtĂ« pĂ«rmirĂ«suar performanca e thjeshtuesit tĂ« plehĂ«rave G1, falĂ« zvogĂ«limit tĂ« bllokimeve pĂ«r sinkronizimin e proceseve tĂ« aplikacionit me proceset e thjeshtuesit tĂ« plehĂ«rave.
  • ËshtĂ« propozuar njĂ« variant i dytĂ« paraprak i API pĂ«r kodimin dhe dekodimin e objekteve me çelĂ«sa kriptografikĂ«, certifikata dhe lista tĂ« tĂ«rhequra certifikatash, duke pĂ«rdorur formatin PEM (Pivacy-Enhanced Mail).
  • ËshtĂ« propozuar pĂ«r testim njĂ« variant i gjashtĂ« paraprak i API pĂ«r paralelizmin e strukturuar (Structured Concurrency), i cili thjeshton zhvillimin e aplikacioneve me shumĂ« procese pĂ«rmes trajtimit tĂ« disa detyrave qĂ« ekzekutohen nĂ« procese tĂ« ndryshme si njĂ« njĂ«si tĂ« vetme.
  • ËshtĂ« shtuar njĂ« redaktim i dytĂ« paraprak i API pĂ«r Konstantet TĂ« Ngadalta pĂ«r tĂ« punuar me objekte qĂ« pĂ«rmbajnĂ« tĂ« dhĂ«na tĂ« pandryshueshme dhe qĂ« trajtohen nĂ« JVM si constante. Optimizimet e performancĂ«s qĂ« aplikohet pĂ«r kĂ«to objekte janĂ« tĂ« ngjashme me ato tĂ« fushave me fjalĂ«n kyçe «final». Ndryshe nga «final», API i ri ndan krijimin e vlerave tĂ« pĂ«rhershme dhe inicializimin e tyre, duke garantuar qĂ« vlera mund tĂ« inicializohet vetĂ«m njĂ« herĂ«, zvogĂ«lon kohĂ«n e nisjes sĂ« programeve dhe lejon aplikimin e optimizimeve tĂ« mbledhjes sĂ« konstantave nĂ« kodin e pĂ«rdoruesve, tĂ« cilat mĂ« parĂ« ishin pĂ«rdorur vetĂ«m nĂ« kodin e brendshĂ«m tĂ« JDK. class Application { // Ka qenĂ«: // static final UserService USERS = new UserService(); // Tani mund tĂ« jetĂ«: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • NĂ« mekanizmin e pĂ«rshtatjes pĂ«r shembuj Ă«shtĂ« propozuar njĂ« variant i katĂ«rt paraprak i mundĂ«sive pĂ«r tĂ« pĂ«rdorur tipet 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 -> «mirë»; case 1 -> «kĂ«rcĂ«nim»; case 2 -> «gabim»; case int i -> «status i panjohur: » + i; } if (i instanceof byte b) { 
 b 
 }
  • ËshtĂ« propozuar njĂ« implementim i njĂ«mbĂ«dhjetĂ« testues i API Vector, i cili ofron funksione pĂ«r llogaritje vektoriale, tĂ« cilat realizohen duke pĂ«rdorur instruksionet vektoriale tĂ« procesorĂ«ve x86_64 dhe AArch64 dhe lejojnĂ« zbatimin e operacioneve njĂ«herazi pĂ«r disa vlera (SIMD). Ndryshe nga mundĂ«sitĂ« e ofruara nĂ« kompiluesin JIT HotSpot pĂ«r avtokompaktimin e operacioneve skalarĂ«, API i ri ofron mundĂ«sinĂ« pĂ«r tĂ« menaxhuar qartazi vektorizimin pĂ«r pĂ«rpunimin paralel tĂ« tĂ« dhĂ«nave.

Për më tepër, kompania Oracle njoftoi projektin Detroit, i cili do të zhvillohet si pjesë e OpenJDK dhe ka për qëllim të përmirësojë portimin midis Java, JavaScript dhe Python. Në kuadër të projektit, synohet 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ë punonte sipër makinerisë virtuale JVM, por e ndërpreu projektin për shkak të problemeve në zhvillimin e një zbatimi të veçantë të JavaScript në kushte kur ekosistema kryesore ishte e lidhur me motorin V8.

Së bashku, mund të përmendim publikimin e përditësimit të platformës për krijimin e aplikacioneve me ndërfaqe grafike JavaFX 26. Në orët e ardhshme pritet gjithashtu publikimi i makinës univerzale 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 bitkodi LLVM (C, C++, Rust).

Burimi: opennet.ru

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