Lëshimi i Java SE 25 LTS dhe OpenJDK 25

Pas gjashtĂ« muajve zhvillimi, kompania Oracle publikoi platformĂ«n Java SE 25 (Java Platform, Standard Edition 24), pĂ«r tĂ« cilĂ«n Ă«shtĂ« pĂ«rdorur projekti i hapur OpenJDK si realizimi referues. PĂ«rveç eliminitimit tĂ« disa funksionaliteteve tĂ« vjetruara, Java SE 25 ruan pĂ«rputhshmĂ«rinĂ« prapa me versionet e mĂ«parshme tĂ« platformĂ«s Java — shumica e projekteve Java tĂ« shkruara mĂ« parĂ« do tĂ« funksionojnĂ« pa ndryshime kur ekzekutohen nĂ«n menaxhimin e versionit tĂ« ri. NdĂ«rtimet e gatshme pĂ«r instalim tĂ« Java SE 25 (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 25 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 25 Ă«shtĂ« klasifikuar si njĂ« lĂ«shim me mbĂ«shtetje tĂ« zgjeruar, pĂ«r tĂ« cilin pĂ«rditĂ«simet do tĂ« lĂ«shohen deri nĂ« vitin 2033 (pĂ«rditĂ«simet publike do tĂ« dalin deri nĂ« Shtator 2030). Si njĂ« degĂ« me mbĂ«shtetje tĂ« gjatĂ« (LTS), vazhdojnĂ« tĂ« mbĂ«shteten gjithashtu degĂ«t Java SE 17 dhe 21, pĂ«rditĂ«simet e sĂ« cilĂ«s do tĂ« lĂ«shohen deri nĂ« vitin 2029 dhe 2031, pĂ«rkatĂ«sisht (publike — deri nĂ« vitin 2026 dhe 2028). MbĂ«shtetja e zgjeruar pĂ«r degĂ«t LTS Java SE 8 dhe 11 do tĂ« vazhdojĂ« deri nĂ« vitin 2030 dhe 2032.

Ndër risitë e ofruara në Java SE 25 (1, 2, 3, 4):

  • U shtua njĂ« API eksperimental StableValue pĂ«r tĂ« punuar me objekte qĂ« pĂ«rmbajnĂ« tĂ« dhĂ«na tĂ« pandryshueshme dhe qĂ« trajtohen nĂ« JVM si konstantĂ«. KĂ«tyre objekteve u aplikohen optimizime performancĂ«, tĂ« ngjashme me fushat me fjalĂ«n kyçe "final". API StableValue ndan krijimin e vlerave tĂ« qĂ«ndrueshme dhe inicializimin e tyre, duke garantuar qĂ« vlera mund tĂ« inicializohet vetĂ«m njĂ« herĂ«, duke zvogĂ«luar kohĂ«n e nisjes sĂ« programeve dhe duke lejuar aplikimin e optimizimeve tĂ« ngjeshjes sĂ« konstantave (constant-folding) nĂ« kodin e pĂ«rdoruesit, tĂ« cilat mĂ« parĂ« ishin pĂ«rdorur vetĂ«m nĂ« kodin e brendshĂ«m tĂ« JDK. class Application { // Ishte: // static final UserService USERS = new UserService(); // Behet: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • U shtua njĂ« API eksperimental pĂ«r kodimin dhe dekodimin e objekteve me çelĂ«sa kriptografikĂ«, certifikata dhe lista tĂ« revokuar tĂ« certifikatave, duke pĂ«rdorur formatin PEM (Pivacy-Enhanced Mail).
  • Shtuar mbĂ«shtetje pĂ«r Vlerat e kufizuara (Scoped Values), tĂ« cilat lejojnĂ« ndarjen e tĂ« dhĂ«nave tĂ« pandryshueshme nĂ« flukset dhe shkĂ«mbimin efektiv tĂ« tĂ« dhĂ«nave midis flukseve tĂ« fĂ«mijĂ«s (vlerat trashĂ«gohen). Vlerat e kufizuara po zhvillohen pĂ«r tĂ« zĂ«vendĂ«suar mekanizmin e variablave lokale pĂ«r rrjedhĂ«n (thread-local variables) dhe janĂ« mĂ« efikase kur pĂ«rdoren njĂ« numĂ«r shumĂ« tĂ« madh tĂ« flukseve virtuale (mijĂ«ra dhe miliona flukse). Dallimi kryesor midis Vlerave tĂ« kufizuara dhe variablave lokalĂ« pĂ«r rrjedhĂ«n Ă«shtĂ« se tĂ« parat shkruhen njĂ« herĂ«, mĂ« pas nuk mund tĂ« ndryshohen dhe mbeten tĂ« aksesueshme vetĂ«m gjatĂ« kohĂ«zgjatjes sĂ« ekzekutimit tĂ« rrjedhĂ«s.
  • Shtuar API pĂ«r pĂ«rdorimin e funksioneve kriptografike tĂ« formimit tĂ« çelikut (KDF, key derivation function), tĂ« cilat lejojnĂ« formimin e çelikut shtesĂ« tĂ« nevojshĂ«m tĂ« gjatĂ« mbi bazĂ«n e çelikut sekret (p.sh., fjalĂ«kalimit) dhe njĂ« grupe tĂ« dhĂ«nash tĂ« rastĂ«sishme.
  • Eshirja e kodit dhe skenarĂ«t e ndĂ«rtimit pĂ«r mbĂ«shtetje tĂ« sistemeve 32-bit x86. PĂ«rcaktimi i mbĂ«shtetjes pĂ«r sistemet 32-bit x86 ka lejuar thjeshtimin e infrastrukturĂ«s pĂ«r ndĂ«rtimin dhe testimin e JDK-sĂ«, si dhe ka lejuar zbatimin e karakteristikave qĂ« lidhen me platformat, pa krijuar menaxhuesit e rezervĂ«s pĂ«r sistemet 32-bit x86.
  • Shtuar mundĂ«sia pĂ«r pĂ«rdorimin e njĂ« shprehjeje "import module M" pĂ«r tĂ« importuar menjĂ«herĂ« tĂ« gjitha paketat e eksportuara nga moduli i caktuar. Ky ndryshim thjeshton ndjeshĂ«m rizhvillimin e bibliotekave modulare, duke lejuar lidhjen e biblioteka dhe klasave pa pĂ«rcaktuar vendndodhjen e tyre nĂ« hierarkinĂ« e paketave. PĂ«r shembull, tregimi "import module java.base" do tĂ« çojĂ« nĂ« importimin e tĂ« gjitha 54 paketave qĂ« bĂ«jnĂ« pjesĂ« nĂ« modul java.base, tĂ« cilat mĂ« parĂ« do tĂ« ishin dashur tĂ« pĂ«rmendeshin veçmas ("import java.io.*", "import java.util.*" etj.).
  • I propozuar njĂ« variant kompakt tĂ« organizimit tĂ« programeve, i cili mund tĂ« jetĂ« i dobishĂ«m pĂ«r mĂ«sim dhe ndĂ«rtimin e aplikacioneve tĂ« vogla. NĂ« formĂ«n kompakte nuk kĂ«rkohet definimi i klasave shtesĂ«, API-tĂ« tipike importohen automatikisht dhe metodat e thjeshta tĂ« hyrjes/daljes janĂ« tĂ« disponueshme. PĂ«r shembull, aplikacioni 'Hello, World!' mund tĂ« reduktohet nĂ«: void main() { IO.println('Hello, World!'); }
  • Lejohet tĂ« pĂ«rcaktohen shprehjet nĂ« konstruktorĂ«t pĂ«rpara thirrjes sĂ« super(
), e cila pĂ«rdoret pĂ«r thirrjet e qarta tĂ« konstruktorit tĂ« klasĂ«s prind nga konstruktorĂ«t e klasĂ«s sĂ« trashĂ«guar, nĂ«se kĂ«to shprehje nuk referohen nĂ« instancĂ«n e krijuar nga konstruktori. class Outer { void hello() { System.out.println('Hello'); } class Inner { Inner() { hello(); super(); } } }
  • U shtua njĂ« mĂ«nyrĂ« gjeneruese pĂ«r punĂ«n e grumbulluesit tĂ« mbeturinave Shenandoah, ku trajtohen veçmas objektet e vjetra dhe ato tĂ« krijuara sĂ« fundmi pĂ«r tĂ« rritur efikasitetin e pastrimit tĂ« objekteve me kohĂ« tĂ« shkurtĂ«r jetese. MĂ«nyra e re siguron kapacitet mĂ« tĂ« parashikueshĂ«m, qĂ«ndresĂ« ndaj ndryshimeve tĂ« ngarkesĂ«s dhe ulje tĂ« konsumit tĂ« memories gjatĂ« grumbullimit tĂ« mbeturinave. Planifikuesi Shenandoah synon tĂ« reduktojĂ« kohĂ«n e ndalesave gjatĂ« grumbullimit tĂ« mbeturinave duke kryer njĂ« sasi mĂ« tĂ« madhe punimesh paralelisht me ekzekutimin e aplikacioneve Java.
  • Thjeshtuar krijimi i caches pĂ«r ngarkimin dhe kompozimin paraprak (Ahead-of-Time), duke mundĂ«suar njĂ« fillim mĂ« tĂ« shpejtĂ« tĂ« HotSpot JVM duke angazhuar klasat nĂ« njĂ« gjendje tĂ« ngarkuar dhe tĂ« kompozuar tashmĂ«. GjatĂ« ekzekutimit, tani nuk kĂ«rkohen operacione tĂ« ndara pĂ«r regjistrimin e aktiviteteve dhe krijimin e caches, dhe mjafton njĂ« komandĂ«: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App 

  • Kur filloni HotSpot Java VM, Ă«shtĂ« implementuar mundĂ«sia e pĂ«rdorimit tĂ« profileve tĂ« ekzekutimit tĂ« metodave, tĂ« marra nga fillimi i kaluar i aplikacionit. Kjo ndryshim lejon qĂ« JIT kompileri tĂ« shmangĂ« grumbullimin e statistikave dhe tĂ« fillojĂ« menjĂ«herĂ« tĂ« gjenerojĂ« kodin natyror pa pritur formimin e profilit.
  • NĂ« HotSpot JVM Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r tituj 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 tkurrjen e madhĂ«sisĂ« sĂ« kupĂ«s dhe rrit eficiencĂ«n e punĂ«s sĂ« cache-it.
  • ËshtĂ« propozuar njĂ« implementim provues i API Vector, qĂ« ofron funksione pĂ«r llogaritjet vektoriale, tĂ« cilat kryhen duke pĂ«rdorur instrukcionet vektoriale tĂ« procesorĂ«ve x86_64 dhe AArch64 dhe lejojnĂ« aplikimin e operacioneve menjĂ«herĂ« nĂ« disa vlera (SIMD). NĂ« krahasim me mundĂ«sitĂ« e ofruara nga JIT kompileri HotSpot pĂ«r avtokompozimin e operacioneve skalarĂ«, API i ri jep mundĂ«sinĂ« pĂ«r tĂ« menaxhuar qartĂ« vektorizimin pĂ«r pĂ«rpunim paralel tĂ« tĂ« dhĂ«nave.
  • Propozohet njĂ« variant i pestĂ« paraprak i API pĂ«r konvergencĂ«n e strukturuar (Structured Concurrency), e cila thjeshton zhvillimin e aplikacioneve me shumĂ« procese pĂ«rmes trajtimit tĂ« disa detyrave qĂ« kryhen nĂ« procese tĂ« ndryshme si njĂ« bllok tĂ« vetĂ«m.
  • NĂ« mekanizmin e pĂ«rputhjes me modelin, propozohet njĂ« variant i tretĂ« paraprak pĂ«r pĂ«rdorimin e tipeve primitive (int, byte, char dhe tipet e tjera bazĂ« 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Ă«shillë»; case 2 -> «gabim»; case int i -> «status i panjohur: » + i; } if (i instanceof byte b) { 
 b 
 }
  • NĂ« JDK Flight Recorder (JFR) Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r profilimin me ndjekjen mĂ« tĂ« saktĂ« tĂ« konsumit tĂ« burimeve CPU nĂ« platformĂ«n Linux. Informacioni nĂ« lidhje me kohĂ«n e ekzekutimit tĂ« konstruktimeve tĂ« ndryshme mund tĂ« visualizationohet nĂ« mĂ«nyrĂ« tĂ« qartĂ« duke pĂ«rdorur diagrame tĂ« ngjyrĂ«s «FlameGraph».
  • ËshtĂ« rritur stabiliteti i funksionimit tĂ« JDK Flight Recorder (JFR) gjatĂ« sampimit asinkron tĂ« stekĂ«ve tĂ« proceseve Java pĂ«rmes kalimit pĂ«rmes stekĂ«ve tĂ« thirrjeve vetĂ«m nĂ« «pikat e sigurta» (safepoints).
  • NĂ« JDK Flight Recorder (JFR) janĂ« shtuar mjete pĂ«r gjurmimin dhe vlerĂ«simin e kohĂ«s sĂ« ekzekutimit tĂ« metodave. PĂ«rkrahet gjurmimi i stack-it tĂ« thirrjeve tĂ« metodave specifike dhe regjistrimi i statistikave precize mbi thirrjet e metodave, duke pĂ«rfshirĂ« metrika si koha e ekzekutimit dhe numri i thirrjeve.

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