Lëshimi i Java SE 25 LTS dhe OpenJDK 25

Pas gjashtĂ« muajsh zhvillimi, Oracle publikoi platformĂ«n Java SE 25 (Java Platform, Standard Edition 24), ku si implementim referencĂ« pĂ«rdoret projekti i hapur OpenJDK. Me pĂ«rjashtim tĂ« heqjes sĂ« disa funksioneve 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Ă« herĂ«t do tĂ« funksionojnĂ« pa ndryshime kur ekzekutohen nĂ« versionin e ri. Paketat 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). Implementimi referencĂ« i Java SE 25, i zhvilluar nĂ« kuadĂ«r tĂ« projektit OpenJDK, Ă«shtĂ« plotĂ«sisht i hapur nĂ«n licencĂ«n GPLv2 me pĂ«rjashtimet GNU ClassPath, tĂ« cilat lejojnĂ« lidhjen dinamike me produkte komerciale.

Java SE 25 Ă«shtĂ« klasifikuar si njĂ« version me mbĂ«shtetje tĂ« zgjeruar afatgjatĂ«, pĂ«r tĂ« cilin pĂ«rditĂ«simet do tĂ« publikohen deri nĂ« vitin 2033 (pĂ«rditĂ«simet publike do tĂ« dalin deri nĂ« shtator 2030). Si degĂ« me mbĂ«shtetje afatgjatĂ« (LTS), vazhdojnĂ« tĂ« mirĂ«mbahen edhe Java SE 17 dhe 21, pĂ«r tĂ« cilat pĂ«rditĂ«simet do tĂ« publikohen respektivisht deri nĂ« vitet 2029 dhe 2031 (publiket — deri nĂ« 2026 dhe 2028). MbĂ«shtetja e zgjeruar pĂ«r degĂ«t LTS Java SE 8 dhe 11 do tĂ« vazhdojĂ« deri nĂ« vitet 2030 dhe 2032.

Në mesin e risive të ofruara në Java SE 25 (1, 2, 3, 4):

  • ËshtĂ« shtuar API eksperimental StableValue pĂ«r punĂ« me objekte qĂ« pĂ«rmbajnĂ« tĂ« dhĂ«na tĂ« pandryshueshme dhe qĂ« trajtohen nga JVM si konstante. PĂ«r objekte tĂ« tilla zbatohen optimizime tĂ« performancĂ«s, tĂ« ngjashme me fushat qĂ« pĂ«rdorin fjalĂ«n kyçe «final». API StableValue ndan krijimin e vlerave tĂ« pĂ«rhershme nga inicializimi i tyre, garanton qĂ« vlera mund tĂ« inicializohet vetĂ«m njĂ« herĂ«, shkurton kohĂ«n e nisjes sĂ« programeve dhe mundĂ«son pĂ«rdorimin nĂ« kodin e pĂ«rdoruesit tĂ« optimizimeve tĂ« palosjes sĂ« konstanteve (constant-folding), tĂ« cilat mĂ« parĂ« pĂ«rdoreshin vetĂ«m nĂ« kodin e brendshĂ«m tĂ« JDK. class Application { // Ishte: // static final UserService USERS = new UserService(); // U bĂ«: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Shtohet API eksperimental pĂ«r kodimin dhe dekodimin e objekteve me çelĂ«sa kriptografikĂ«, certifikata dhe lista tĂ« certifikatave tĂ« tĂ«rhequra, duke pĂ«rdorur formatin PEM (Pivacy-Enhanced Mail).
  • Shtimi i mbĂ«shtetjes pĂ«r vlerat e kufizuara (Scoped Values) lejon ndarjen e tĂ« dhĂ«nave tĂ« pandryshueshme nĂ« shkallĂ« dhe shkĂ«mbimin efektiv tĂ« tĂ« dhĂ«nave midis nĂ«nprocesseve (vlerat trashĂ«zohen). Scoped Values po zhvillohen pĂ«r tĂ« zĂ«vendĂ«suar mekanizmin e variablave lokalĂ« tĂ« procesit (thread-local variables) dhe janĂ« mĂ« efikase kur pĂ«rdoren njĂ« numĂ«r shumĂ« tĂ« madh procesesh virtualĂ« (mijĂ«ra dhe miliona procese). Dallimi kryesor midis Scoped Values dhe variablave lokalĂ« tĂ« procesit Ă«shtĂ« se tĂ« parat shkruhen njĂ« herĂ«, nuk mund tĂ« ndryshohen mĂ« pas dhe mbeten tĂ« disponueshme vetĂ«m gjatĂ« ekzekutimit tĂ« procesit.
  • Shtuar API pĂ«r tĂ« pĂ«rdorur funksionet kriptografike tĂ« formimit tĂ« çelĂ«sit (KDF, key derivation function), tĂ« cilat lejojnĂ« krijimin e çelĂ«save shtesĂ« me gjatĂ«si tĂ« nevojshme mbi bazĂ«n e çelĂ«sit sekret (p.sh., fjalĂ«kalimit) dhe njĂ« grup tĂ« dhĂ«nash tĂ« rastĂ«sishme.
  • Rq 32-bit x86. PĂ«rfundimi i mbĂ«shtetjes pĂ«r sistemet 32-bit x86 ka lejuar thjeshtimin e infrastrukturĂ«s pĂ«r ndĂ«rtimin dhe testimin e JDK, si dhe ka mundĂ«suar implementimin e mundĂ«sive tĂ« lidhura me platforma, pa krijimin e menaxhuesve tĂ« fallback pĂ«r sistemet 32-bit x86.
  • ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« pĂ«rdorur njĂ« shprehje tĂ« vetme «import module M» pĂ«r tĂ« importuar menjĂ«herĂ« tĂ« gjitha paketat e eksportuara nga moduli i specifikuar. Ky ndryshim e thjeshton ndjeshĂ«m ripĂ«rdorimin e bibliotekave modulare, duke lejuar lidhjen e bibliotekave dhe klasave pa pĂ«rcaktuar vendin e tyre nĂ« hierarkinĂ« e paketave. PĂ«r shembull, specifikimi «import module java.base» do tĂ« sjellĂ« importimin e tĂ« 54 paketave qĂ« pĂ«rfshihen nĂ« modulin java.base, tĂ« cilat mĂ« parĂ« do tĂ« duhej tĂ« pĂ«rmendeshin veçmas («import java.io.*», «import java.util.*» etj.).
  • ËshtĂ« propozuar njĂ« variant kompakt pĂ«r strukturimin e programeve, i cili mund tĂ« jetĂ« i dobishĂ«m pĂ«r mĂ«sim dhe pĂ«r zhvillimin e aplikacioneve tĂ« vogla. NĂ« formĂ«n kompakte nuk kĂ«rkohet pĂ«rcaktimi i klasave shtesĂ«, API-tĂ« tipike importohen automatikisht dhe ofrohen metoda tĂ« thjeshtuara tĂ« hyrjes/daljes. PĂ«r shembull, aplikacioni «Hello, World!» mund tĂ« reduktohet nĂ«: void main() { IO.println(«Hello, World!»); }
  • Lejohet pĂ«rdorimi nĂ« konstruktorĂ« i shprehjeve pĂ«rpara thirrjes sĂ« super(
), e cila pĂ«rdoret pĂ«r thirrjen e drejtpĂ«rdrejtĂ« tĂ« konstruktorit tĂ« klasĂ«s prind nga konstruktori i klasĂ«s trashĂ«guese, nĂ«se kĂ«to shprehje nuk i referohen instancĂ«s qĂ« krijohet nga konstruktori. class Outer { void hello() { System.out.println(«Hello»); } class Inner { Inner() { hello(); super(); } } }
  • ËshtĂ« shtuar njĂ« mod aktivizimi gjenerativ pĂ«r mbledhĂ«sin e mbetjeve Shenandoah, ku objektet e vjetra dhe ato tĂ« sapo krijuara trajtohen veçmas pĂ«r tĂ« rritur efikasitetin e pastrimit tĂ« objekteve me jetĂ«shkurtĂ«r. Ky mod i ri siguron njĂ« kapacitet mĂ« tĂ« parashikueshĂ«m, qĂ«ndresĂ« ndaj ndryshimeve tĂ« ngarkesĂ«s dhe zvogĂ«lim tĂ« konsumit tĂ« memories gjatĂ« mbledhjes sĂ« mbetjeve. Planifikuesi Shenandoah synon tĂ« reduktojĂ« kohĂ«t e ndalimeve gjatĂ« mbledhjes sĂ« mbetjeve duke kryer njĂ« volum mĂ« tĂ« madh punĂ«sh paralel me ekzekutimin e aplikacioneve Java.
  • ËshtĂ« thjeshtuar krijimi i cache-it pĂ«r ngarkimin dhe kompozimin paraprak (Ahead-of-Time) tĂ« klasave, i cili mundĂ«son pĂ«rshpejtimin e nisjes sĂ« HotSpot JVM duke pĂ«rdorur klasat nĂ« gjendje tashmĂ« tĂ« ngarkuar dhe tĂ« kompozuar. GjatĂ« nisjes nuk kĂ«rkohen mĂ« veprime tĂ« veçanta pĂ«r regjistrimin e aktivitetit dhe krijimin e cache-it, dhe mjafton njĂ« komandĂ« e vetme: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App 

  • NĂ« nisjen e HotSpot Java VM Ă«shtĂ« realizuar mundĂ«sia e pĂ«rdorimit tĂ« profileve tĂ« ekzekutimit tĂ« metodave, tĂ« marra nga nisja e kaluar e aplikacionit. Kjo ndryshim lejon qĂ« JIT-kompilatori tĂ« ecĂ« pĂ«rpara pa mbledhur statistika dhe tĂ« fillojĂ« menjĂ«herĂ« tĂ« gjenerojĂ« kodin natyror pa pritur formimin e profilit.
  • NĂ« HotSpot JVM Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r header-a kompakte tĂ« objekteve, tĂ« cilat nĂ« sisteme 64-bit kanĂ« zvogĂ«luar madhĂ«sinĂ« nga 96 nĂ« 64 bite (nga 12 nĂ« 8 byte). ZvogĂ«limi i madhĂ«sisĂ« sĂ« header-eve ndihmon nĂ« uljen e madhĂ«sisĂ« sĂ« grumbullit dhe rrit efikasitetin e punĂ«s sĂ« caches.
  • ËshtĂ« propozuar njĂ« implementim testues tĂ« API Vector, qĂ« ofron funksione pĂ«r llogaritjet vektoriale, tĂ« cilat realizohen duke pĂ«rdorur instruksionet vektoriale tĂ« procesorĂ«ve x86_64 dhe AArch64 dhe lejojnĂ« aplikimin e operacioneve njĂ«kohĂ«sisht nĂ« disa vlera (SIMD). Ndryshe nga mundĂ«sitĂ« e avokimit tĂ« vetvetishĂ«m tĂ« operacioneve skalar tĂ« ofruara nga kompili i JIT HotSpot, API i ri ofron mundĂ«sinĂ« pĂ«r tĂ« menaxhuar qartĂ« vektorizimin pĂ«r pĂ«rpunimin paralel tĂ« tĂ« dhĂ«nave.
  • ËshtĂ« propozuar pĂ«r testim varianti i pestĂ« paraprak i API pĂ«r paralelizmin e strukturuar (Structured Concurrency), qĂ« thjeshton zhvillimin e aplikacioneve me shumĂ« fije pĂ«rmes trajtimit tĂ« disa detyrave qĂ« ekzekutohen nĂ« fije tĂ« ndryshme si njĂ« blok i vetĂ«m.
  • NĂ« mekanizmin e pĂ«rputhjes sĂ« modeleve Ă«shtĂ« propozuar njĂ« variant i tretĂ« paraprak i mundĂ«sisĂ« pĂ«r tĂ« pĂ«rdorur tipe primitive (int, byte, char dhe tipe tĂ« tjera bazĂ« qĂ« nuk janĂ« objekte) nĂ« tĂ« gjitha llojet e modeleve, 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 
 }
  • NĂ« JDK Flight Recorder (JFR) Ă«shtĂ« shtuar mbĂ«shtetje eksperimentale pĂ«r profilizim me gjurmim mĂ« tĂ« saktĂ« tĂ« pĂ«rdorimit tĂ« burimeve tĂ« CPU nĂ« platformĂ«n Linux. Informacioni pĂ«r kohĂ«n e ekzekutimit tĂ« strukturave tĂ« ndryshme mund tĂ« vizualizohet qartĂ« me pĂ«rdorimin e diagrameve me ngjyra «FlameGraph».
  • ËshtĂ« rritur qĂ«ndrueshmĂ«ria e JDK Flight Recorder (JFR) gjatĂ« kampionimit asinkron tĂ« stekĂ«ve tĂ« rrjedhave Java, falĂ« pĂ«rshkimit tĂ« stekut tĂ« thirrjeve vetĂ«m nĂ« «pikat e sigurta» (safepoints).
  • NĂ« JDK Flight Recorder (JFR) janĂ« shtuar mjete pĂ«r ndjekjen dhe vlerĂ«simin e kohĂ«s sĂ« ekzekutimit tĂ« metodave. MbĂ«shtetet ndjekja e stekĂ«ve tĂ« thirrjeve tĂ« metodave specifike dhe regjistrimi i statistikave tĂ« saktĂ« mbi thirrjet e metodave, pĂ«rfshirĂ« tregues si kohĂ«n e ekzekutimit dhe numrin e thirrjeve.

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