Lëshimi i Java SE 17

Pas pas gjashtĂ« muajsh zhvillimi, kompania Oracle lançoi platformĂ«n Java SE 17 (Java Platform, Standard Edition 17), e cila pĂ«rdor projektin e hapur OpenJDK si implementimin referent. PĂ«rveç eliminimit tĂ« disa mundĂ«sive tĂ« vjetra, Java SE 17 ruan pĂ«rputhshmĂ«rinĂ« prapa me versionet e kaluara tĂ« platformĂ«s Java — shumica e projekteve Java tĂ« shkruara mĂ« parĂ« do tĂ« funksionojnĂ« pa ndonjĂ« ndryshim nĂ«n menaxhimin e versionit tĂ« ri. NdĂ«rtimet e gatshme pĂ«r instalim tĂ« Java SE 17 (JDK, JRE dhe Server JRE) janĂ« pĂ«rgatitur pĂ«r Linux (x86_64, AArch64), Windows (x86_64) dhe macOS (x86_64, AArch64). Implementimi referent i Java 17, i zhvilluar nĂ« kuadĂ«r tĂ« 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 17 është kategorikuar si një version me mbështetje të zgjatur (LTS), me azhurnime që do të lëshohen deri në vitin 2029. Lëshimi i azhurnimeve për lëshimin e mëparshëm ndërmjet Java 16 është ndaluar. Dega e mëparshme LTS e Java 11 do të mbështetet deri në vitin 2026. Lëshimi i ardhshëm LTS është planifikuar për shtator 2024. Kujtojmë se që nga lëshimi i Java 10, projekti është kaluar në një proces të ri zhvillimi, duke implicuar një cikël më të shkurtër formimi për lëshime të reja. Funksionaliteti i ri tani zhvillohet në një degë master që azhurnohet vazhdimisht, në të cilën përfshihen tashmë ndryshimet e gatshme dhe nga e cila çdo gjashtë muaj degët e stabilizimit për lëshime të reja shkëputen.

Disa nga novacionet e Java 17 përfshijnë:

  • Propozohet njĂ« implementim eksperimental i pĂ«rputhjes me modelet nĂ« shprehjet «switch», duke lejuar pĂ«rdorimin e modeleve fleksibile nĂ« etiketat «case» qĂ« kapin njĂ« seri vlerash, pĂ«r tĂ« cilat mĂ« parĂ« nevojiteshin zinxhirĂ« tĂ« mĂ«dhenj shprehjesh «if
else». PĂ«r mĂ« tepĂ«r, brenda «switch» Ă«shtĂ« siguruar mundĂ«sia pĂ«r tĂ« trajtuar vlerat NULL. Object o = 123L; String formatted = switch (o) { 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(); };
  • Stabilizimi i mbĂ«shtetjes pĂ«r klasat dhe ndĂ«rfaqet e mbyllura («sealed»), tĂ« cilat nuk mund tĂ« pĂ«rdoren nga klasat dhe ndĂ«rfaqet e tjera pĂ«r trashĂ«giminĂ«, gjĂ« qĂ« zgjeron ose pĂ«rsĂ«rit implementimin. Klasat e mbyllura gjithashtu ofrojnĂ« njĂ« mĂ«nyrĂ« mĂ« deklarative pĂ«r tĂ« kufizuar pĂ«rdorimin e superklasĂ«s sesa modifikatorĂ«t e aksesit, tĂ« bazuar nĂ« enumerimin e qartĂ« tĂ« nĂ«nklasave tĂ« lejuara pĂ«r zgjerim. package com.example.geometry; public sealed class Shape permits com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {
}
  • Propozohet njĂ« implementim i dytĂ« paraprak i API Vector, qĂ« ofron funksione pĂ«r llogaritjet vektorike, tĂ« cilat kryhen duke pĂ«rdorur komandat 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 ofruara nga JIT-kompilatori HotSpot pĂ«r vektorizimin automat tĂ« operacioneve skalar, API i ri ofron mundĂ«sinĂ« pĂ«r tĂ« kontrolluar qartĂ« vektorizimin pĂ«r pĂ«rpunimin paralel tĂ« tĂ« dhĂ«nave.
  • Shtimi i njĂ« implementimi paraprak tĂ« API Foreign Function & Memory, me anĂ« tĂ« cilit aplikacionet mund tĂ« bashkĂ«punojnĂ« me kodin dhe tĂ« dhĂ«nat jashtĂ« Java runtime. API i ri mundĂ«son thirrjen efikase tĂ« funksioneve qĂ« nuk ekzekutohen nĂ« JVM dhe qasjen nĂ« kujtesĂ«n qĂ« nuk menaxhohet nga JVM. PĂ«r shembull, mund tĂ« thirren funksione nga biblioteka tĂ« jashtme tĂ« ndara dhe tĂ« qasen nĂ« tĂ« dhĂ«nat e procesit pa pĂ«rdorur JNI.
  • Motori i vizatimit pĂ«r macOS, qĂ« siguron funksionimin e API Java 2D, i cili nga ana e tij aktivizohet nĂ« API Swing, Ă«shtĂ« adaptuar pĂ«r pĂ«rdorimin e API grafik Metal. NĂ« mĂ«nyrĂ« default nĂ« platformĂ«n macOS vazhdon tĂ« pĂ«rdoret OpenGL, ndĂ«rsa pĂ«r tĂ« aktivizuar mbĂ«shtetje pĂ«r Metal Ă«shtĂ« e nevojshme tĂ« vendoset bie ‘-Dsun.java2d.metal=true’ dhe tĂ« ketĂ« sĂ« paku lĂ«shimin 10.14.x tĂ« macOS.
  • Shtimi i njĂ« porti pĂ«r platformĂ«n macOS/AArch64 (kompjuterĂ«t Apple tĂ« bazuar nĂ« çipat e rinj Apple M1). Karakteristika e kĂ«tij porti Ă«shtĂ« mbĂ«shtetja pĂ«r mekanizmin e mbrojtjes sĂ« kujtesĂ«s W^X (Write XOR Execute), ku faqet e kujtesĂ«s nuk mund tĂ« jenĂ« njĂ«kohĂ«sisht tĂ« aksesueshme pĂ«r tĂ« shkruar dhe pĂ«r tĂ« ekzekutuar. (Kodi mund tĂ« ekzekutohet vetĂ«m pasi tĂ« ndalohet shkrimi, ndĂ«rsa shkruhet nĂ« njĂ« faqe kujtese vetĂ«m pasi tĂ« ndalohet ekzekutimi).
  • E rikthyer pĂ«rdorimi vetĂ«m tĂ« semantikĂ«s strikte (strictfp) pĂ«r shprehjet me pikĂ« fluturimi. NdĂ«rpritet mbĂ«shtetje pĂ«r semantikĂ«n e disponueshme duke filluar nga versioni Java 1.2, e cila pĂ«rfshinte thjeshtime pĂ«r punĂ«n nĂ« sisteme me koprosesorĂ« matematikorĂ« mjaft tĂ« vjetĂ«r x87 (pas shfaqjes sĂ« instrukcioneve SSE2, nevoja pĂ«r semantikĂ« shtesĂ« u zhduk).
  • JanĂ« zbatuar lloje tĂ« reja interfacesh pĂ«r gjeneratorĂ«t e numrave tĂ« rastĂ«sishĂ«m, si dhe janĂ« zbatuar algoritme shtesĂ« pĂ«r njĂ« gjenerim mĂ« cilĂ«sor tĂ« numrave tĂ« rastĂ«sishĂ«m. Aplikacionet kanĂ« marrĂ« mundĂ«sinĂ« tĂ« zgjedhin algoritmin e gjenerimit tĂ« numrave tĂ« rastĂ«sishĂ«m. ËshtĂ« pĂ«rmirĂ«suar mbĂ«shtetje pĂ«r gjenerimin e flukseve tĂ« objekteve tĂ« rastĂ«sishme.
  • JanĂ« zbatuar kĂ«rkesa strikte pĂ«r inkapsulimin e tĂ« gjithĂ« elementeve tĂ« brendshĂ«m tĂ« JDK, pĂ«rveç API-ve kritike, siç Ă«shtĂ« sun.misc.Unsafe. Inkapsulimi i rreptĂ« ndalon pĂ«rpjekjet pĂ«r tĂ« aksesuar nga kodi klasat, metodat dhe fushat e brendshme. MĂ« parĂ«, ishte e mundur tĂ« çaktivizohej modaliteti i inkapsulimit tĂ« rreptĂ« duke pĂ«rdorur opsionin ‘—illegal-access=permit’, por tani ky opsion Ă«shtĂ« shpallur i vjetruar. Aplikacionet qĂ« kĂ«rkojnĂ« qasje nĂ« klasat, metodat dhe fushat e brendshme duhet ta pĂ«rcaktojnĂ« atĂ« qartĂ« duke pĂ«rdorur opsionin ‘—add-opens’ ose atributin Add-Opens nĂ« skedarin e manifestit.
  • Aplikacionet janĂ« ngarkuar tĂ« pĂ«rcaktojnĂ« filtra pĂ«r deserializimin e tĂ« dhĂ«nave, tĂ« cilat mund tĂ« varet nga konteksti dhe tĂ« zgjidhen dinamikisht nĂ« lidhje me operacione tĂ« caktuara tĂ« deserializimit. Filtrat e vendosur janĂ« tĂ« aplikueshĂ«m pĂ«r tĂ« gjithĂ« makinĂ«n virtuale (JVM-wide), domethĂ«nĂ« mbulojnĂ« jo vetĂ«m aplikacionin vetĂ«, por edhe bibliotekat e palĂ«ve tĂ« treta tĂ« pĂ«rdorura nĂ« aplikacion.
  • NĂ« Swing Ă«shtĂ« shtuar metoda javax.swing.filechooser.FileSystemView.getSystemIcon pĂ«r tĂ« shkarkuar ikona me madhĂ«si tĂ« madhe, duke lejuar pĂ«rmirĂ«simin e formimit tĂ« ndĂ«rfaqes nĂ« ekrane me densitet tĂ« lartĂ« pikselesh (HighDPI).
  • NĂ« API-nĂ« java.net.DatagramSocket Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r lidhjen me grupet Multicast pa nevojĂ«n pĂ«r tĂ« pĂ«rdorur API tĂ« veçantĂ« java.net.MulticastSocket.
  • JanĂ« pĂ«rmirĂ«suar mjetet IGV (Ideal Graph Visualizer), duke siguruar vizualizimin interaktiv tĂ« pĂ«rfaqĂ«simit tĂ« pĂ«rkohshĂ«m tĂ« kodit nĂ« JIT-kompilatorin HotSpot VM C2.
  • NĂ« JavaDoc, pĂ«r tĂ« njĂ«jtin parim si kompileri javac, gjatĂ« shkarkimit tĂ« njĂ« gabimi tani tregohet numri i linjĂ«s problematike nĂ« skedarin burimor dhe vendi i gabimit.
  • Shtuar pronĂ«n native.encoding, e cila pasqyron emrin e kodimit sistemor tĂ« karaktereve (UTF-8, koi8-r, cp1251, etj.).
  • Shtuar interfaci java.time.InstantSource, i cili lejon manipulimin e kohĂ«s pa u lidhur me zonĂ«n time.
  • Shtuar API java.util.HexFormat pĂ«r konvertimin nĂ« pĂ«rfaqĂ«simin heksadeshimal dhe anasjellas.
  • NĂ« kompiler Ă«shtĂ« shtuar modaliteti blackhole, qĂ« çaktivizon operacionet e pĂ«rjashtimit tĂ« kodit tĂ« papĂ«rdorur (dead-code elimination), i cili mund tĂ« pĂ«rdoret gjatĂ« testeve tĂ« performancĂ«s.
  • NĂ« Runtime Ă«shtĂ« shtuar opsioni ‘-Xlog:async’ pĂ«r regjistrimin e logeve nĂ« modalitetin asinkron.
  • PĂ«r vendosjen e lidhjeve tĂ« sigurta, tani sĂ« pari pĂ«rdoret TLS 1.3 (mĂ« parĂ« ishte pĂ«rdorur TLS 1.2).
  • Kategoria e API-t Applet (java.applet.Applet*, javax.swing.JApplet), qĂ« ishte shpallur e vjetĂ«ruar, Ă«shtĂ« transferuar nĂ« kategorinĂ« e atyre qĂ« synohen pĂ«r t'u fshirĂ«, e cila u pĂ«rdor pĂ«r tĂ« hapur aplikacione Java nĂ« shfletues (ka humbur aktualitetin pas ndĂ«rprerjes sĂ« mbĂ«shtetjes pĂ«r plugin-in Java pĂ«r shfletuesit).
  • Menaxheri i SigurisĂ« Ă«shtĂ« transferuar nĂ« kategorinĂ« e atyre qĂ« synohen pĂ«r t'u fshirĂ«, i cili ka humbur relevancĂ«n dhe Ă«shtĂ« bĂ«rĂ« i pavlerĂ« pas ndĂ«rprerjes sĂ« mbĂ«shtetjes pĂ«r plugin-in e shfletuesit.
  • Mekanizmi RMI Activation Ă«shtĂ« hequr, i cili Ă«shtĂ« bĂ«rĂ« i vjetĂ«ruar, u transferua nĂ« kategorinĂ« e opsioneve qĂ« nga Java 8 dhe pĂ«rdoret rrallĂ« nĂ« praktikĂ« moderne.
  • Nga SDK Ă«shtĂ« hequr kompileri eksperimental, qĂ« mbĂ«shtet JIT (just-in-time) pĂ«r kompilimin dinamik tĂ« kodit Java pĂ«r HotSpot JVM, si dhe modaliteti i kompilimit parashikues (AOT, ahead-of-time) tĂ« klasave nĂ« kodin makinerik para fillimit tĂ« makinĂ«s virtuale. Kompileri Ă«shtĂ« shkruar nĂ« Java dhe Ă«shtĂ« bazuar nĂ« pĂ«rpjekjet e projektit Graal. Theksohet se mbĂ«shtetje e mĂ«tejshme e kompilerit kĂ«rkon shumĂ« burime, tĂ« cilat nuk justifikohen nĂ« kushte tĂ« mungesĂ«s sĂ« kĂ«rkesĂ«s nga zhvilluesit.

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