Lëshimi i Java SE 20

Pas six muajsh zhvillimi, kompania Oracle lĂ«shoi platformĂ«n Java SE 20 (Java Platform, Standard Edition 20), e cila pĂ«rdor projektin e hapur OpenJDK si implementim standard. PĂ«rveç heqjes sĂ« disa veçorive tĂ« vjetra, Java SE 20 ruan pĂ«rputhshmĂ«rinĂ« me versionet e mĂ«parshme tĂ« platformĂ«s Java — shumica e projekteve Java tĂ« shkruara mĂ« parĂ« do tĂ« funksionojnĂ« pa ndryshime nĂ«n menaxhimin e versionit tĂ« ri. Paketat e gatshme pĂ«r instalim tĂ« Java SE 20 (JDK, JRE dhe Server JRE) janĂ« pĂ«rgatitur pĂ«r Linux (x86_64, AArch64), Windows (x86_64) dhe macOS (x86_64, AArch64). Implementimi standard i Java 20, i zhvilluar brenda projektit OpenJDK, Ă«shtĂ« plotĂ«sisht i hapur nĂ«n licencĂ«n GPLv2 me pĂ«rjashtime tĂ« GNU ClassPath, qĂ« lejojnĂ« lidhjen dinamike me produkte komerciale.

Java SE 20 është kategorizuar si një version me mbështetje të zakonshme, përditësimet e të cilit do të publikohen deri në lëshimin e ardhshëm. Si degë me mbështetje të zgjatur (LTS) duhet të përdoret Java SE 17, përditësimet e të cilit do të publikohen deri në vitin 2029. Kujtojmë se që nga lëshimi i Java 10, projekti kaloi në një proces të ri zhvillimi, që parashikon një cikël më të shkurtër për formimin e lëshimeve të reja. Funksionaliteti i ri tani zhvillohet në një degë master të vazhdueshme që përfshin ndryshimet e gatshme dhe prej së cilës ndahen degët për stabilizimin e lëshimeve të reja çdo gjashtë muaj.

Nga risitë e Java 20 mund të përmenden:

  • U propozua mbĂ«shtetje paraprake pĂ«r vlerat e kufizuara (Scoped Values), tĂ« cilat lejojnĂ« ndarjen e tĂ« dhĂ«nave tĂ« pandryshueshme nĂ« rrjedha dhe shkĂ«mbimin efikas tĂ« tĂ« dhĂ«nave midis rrjedhave fĂ«mijĂ« (vlerat trashĂ«gohen). Scoped Values 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 rrjedhash virtuale (mijĂ«ra dhe miliona rrjedha). Dallimi kryesor i Scoped Values nga variablat lokale pĂ«r rrjedhĂ«n Ă«shtĂ« se tĂ« parat shkruhen njĂ«herĂ«, nuk mund tĂ« ndryshohen mĂ« tej dhe mbeten tĂ« aksesueshme vetĂ«m pĂ«r kohĂ«n e ekzekutimit tĂ« rrjedhĂ«s. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request.isAuthorized() ? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) throw new InvalidUserException(); return new DBConnection(
); } }
  • U shtua realizimi i dytĂ« paraprak i modeleve tĂ« regjistrimeve (record pattern), qĂ« zgjerojnĂ« mundĂ«sinĂ« qĂ« shfaqej nĂ« Java 16 pĂ«r pĂ«rputhje me modelin nĂ« mĂ«nyrĂ« pĂ«r tĂ« analizuar vlerat e klasave tĂ« tipit regjistrimi. PĂ«r shembull: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p.x(); int y = p.y(); System.out.println(x + y); } }
  • U shtua realizimi i katĂ«rt paraprak i pĂ«rputhjes me modelin nĂ« shprehjet "switch", qĂ« lejon nĂ« etiketat "case" pĂ«rdorimin e modeleve fleksibĂ«l qĂ« mbulojnĂ« njĂ« seri vlerash, pĂ«r tĂ« cilat mĂ« parĂ« ishte e nevojshme tĂ« pĂ«rdoret njĂ« varg i gjatĂ« shprehjesh "if
else". static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
  • U shtua realizimi i dytĂ« paraprak i API FFM (Foreign Function & Memory), qĂ« lejon organizimin e bashkĂ«punimit tĂ« programeve Java me kodin dhe tĂ« dhĂ«nat e jashtme pĂ«rmes thirrjeve tĂ« funksioneve nga biblioteka tĂ« jashtme dhe aksesit nĂ« kujtesĂ« pĂ«rtej JVM.
  • U shtua realizimi i dytĂ« paraprak i rrjedhave virtuale, qĂ« pĂ«rfaqĂ«sojnĂ« rrjedha tĂ« lehta, duke e thjeshtuar ndjeshĂ«m shkruarjen dhe mbajtjen e aplikacioneve shumĂ« tĂ« dhĂ«na dhe me shumĂ« rrjedha.
  • U shtua varianti i dytĂ« eksperimental i API pĂ«r paralelizmin e strukturuar, qĂ« thjeshton zhvillimin e aplikacioneve shumĂ« tĂ« dhĂ«na pĂ«rmes trajtimit tĂ« disa detyrave, tĂ« cilat ekzekutohen nĂ« rrjedha tĂ« ndryshme, si njĂ« bllok tĂ« vetĂ«m.
  • U shtua realizimi i pestĂ« paraprak i API Vector, i cili ofron funksione pĂ«r llogaritje vektoriale qĂ« kryhen duke pĂ«rdorur udhĂ«zimet vektoriale tĂ« procesorĂ«ve x86_64 dhe AArch64 dhe lejon aplikimin e operacioneve njĂ«herĂ«sh nĂ« disa vlera (SIMD). Ndryshe nga funksionet e ofruara nga kompajleri JIT HotSpot pĂ«r avotizimin 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.

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