Publikimi i Java SE 20

Pas pas gjashtë muajsh zhvillimi, kompania Oracle publikoi platformën Java SE 20 (Java Platform, Standard Edition 20), e cila përdor projektin e hapur OpenJDK si implementimin referues. me përjashtim të heqjes së disa funksionaliteteve të vjetra, Java SE 20 mban përputhshmëri të prapame me versionet e mëparshme të platformës Java - shumica e projekteve të kaluara të shkruara në Java do të punojnë pa asnjë ndryshim nën menaxhimin e versionit të ri. Ndërtesat e gatshme për thekë 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 referues i Java 20, i zhvilluar në kuadër të projektit OpenJDK, është plotësisht i hapur nën licencën GPLv2 me përjashtime nga GNU ClassPath, që lejojnë lidhjen dinamike me produkte komerciale.

Java SE 20 është klasifikuar si një lëshim me një periudhë mbështetjeje standarde, përditësimet për të cilin do të publikohen deri në lëshimin e ardhshëm. Si degë me periudhë të zgjatur mbështetjeje (LTS) duhet të përdoret Java SE 17, përditësimet për të cilën do të publikohen deri në vitin 2029. Kujtojmë se, që nga publikimi i Java 10, projekti ka kaluar në një proces të ri zhvillimi, që përfshin një cikël më të shkurtër të formimit të lëshimeve të rinj. Funksionaliteti i ri tani zhvillohet në një degë master të përhershme, në të cilën përfshihen ndryshimet e gatshme dhe nga e cila ndahen degë për stabilizimin e lëshimeve të reja çdo gjashtë muaj.

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

  • ËshtĂ« propozuar njĂ« mbĂ«shtetje paraprake pĂ«r vlera tĂ« kufizuara (Scoped Values), tĂ« cilat lejojnĂ« ndarjen e tĂ« dhĂ«nave tĂ« pandryshueshme nĂ« rrjedha dhe shkĂ«mbimin efikas tĂ« tĂ« dhĂ«nave midis nĂ«n-rrjedhave (vlerat trashĂ«gohen). Scoped Values zhvillohen pĂ«r tĂ« zĂ«vendĂ«suar mekanizmin e variablave lokalĂ« tĂ« rrjedhĂ«s (thread-local variables) dhe janĂ« mĂ« efikase kur pĂ«rdoren njĂ« numĂ«r shumĂ« tĂ« madh tĂ« rrjedhave virtuale (mijĂ«ra dhe milionĂ« rrjedha). Dallimi kryesor midis Scoped Values dhe variablave lokalĂ« tĂ« rrjedhĂ«s Ă«shtĂ« se tĂ« parat shkruhen njĂ« herĂ«, mĂ« pas nuk mund tĂ« ndryshohen dhe mbeten tĂ« disponueshme vetĂ«m gjatĂ« 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(
); } }
  • ËshtĂ« shtuar njĂ« realizim i dytĂ« paraprak i ŃˆĐ°Đ±Đ»ĐŸĐœĂ«ve tĂ« regjistrimit (record pattern), qĂ« zgjerojnĂ« mundĂ«sinĂ« e pĂ«rfaqĂ«simit tĂ« pranishme nĂ« Java 16 pĂ«r pĂ«rputhshmĂ«rin me mostrat e mjeteve pĂ«r analizimin e vlerave tĂ« klasave tĂ« tipit record. 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); } }
  • ËshtĂ« shtuar njĂ« realizim i katĂ«rt paraprak i pĂ«rputhshmĂ«risĂ« me mostrat nĂ« shprehjet «switch», qĂ« lejon pĂ«rdorimin e formateve fleksibĂ«l nĂ« etiketat «case», duke mbuluar menjĂ«herĂ« njĂ« seri vlerash, pĂ«r tĂ« cilat mĂ« parĂ« ishte e nevojshme tĂ« pĂ«rdorej njĂ« varg i ngatĂ«rruar 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(); }; }
  • ËshtĂ« shtuar njĂ« realizim i dytĂ« paraprak i API FFM (Foreign Function & Memory), qĂ« lejon organizimin e bashkĂ«punimit tĂ« programeve Java me kod dhe tĂ« dhĂ«na tĂ« jashtme pĂ«rmes thirrjeve tĂ« funksioneve nga biblioteka tĂ« jashtme dhe aksesit nĂ« memorie jashtĂ« JVM.
  • E shtuar Ă«shtĂ« realizimi i dytĂ« i pĂ«rkohshĂ«m i rrjedhave virtuale, tĂ« cilat janĂ« rrjedha tĂ« lehta qĂ« thjeshtojnĂ« ndjeshĂ«m shkrimin dhe mbĂ«shtetje e aplikacioneve tĂ« shumĂ«fishta me performancĂ« tĂ« lartĂ«.
  • E shtuar Ă«shtĂ« varianti i dytĂ« i API eksperimental pĂ«r paralelizmin e strukturuar, i cili thjeshton zhvillimin e aplikacioneve tĂ« shumĂ«fishta duke trajtuar disa detyra tĂ« kryera nĂ« rrjedha tĂ« ndryshme si njĂ« bllok tĂ« vetĂ«m.
  • E shtuar Ă«shtĂ« realizimi i pestĂ« i pĂ«rkohshĂ«m i API-sĂ« Vector, e cila ofron funksione pĂ«r llogaritjet vektoriale qĂ« kryhen duke pĂ«rdorur instrukcione vektoriale tĂ« procesorĂ«ve x86_64 dhe AArch64, duke lejuar qĂ« operacionet tĂ« aplikohen njĂ«kohĂ«sisht nĂ« shumĂ« vlera (SIMD). Ndryshe nga mundĂ«sitĂ« e avovektorizimit tĂ« operacioneve skalarĂ« tĂ« ofruara nga JIT-kompila HotSpot, 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.

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