Lëshimi i Java SE 17

Pas gjashtĂ« muaj zhvillimi, kompania Oracle publikoi platformĂ«n Java SE 17 (Java Platform, Standard Edition 17), duke pĂ«rdorur projektin e hapur OpenJDK si realizimin referencĂ«. NĂ« pĂ«rjashtim tĂ« heqjes sĂ« disa funksionaliteteve tĂ« vjetra, Java SE 17 ruan pajtueshmĂ«rinĂ« e prapme me versionet e kaluara tĂ« platformĂ«s Java — shumica e projekteve Java tĂ« shkruara mĂ« parĂ« do tĂ« funksionojnĂ« pa ndryshime nĂ«n versionin e ri. Ndryshimet 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). Realizimi referencĂ« 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, tĂ« cilat lejojnĂ« lidhjen dinamike me produkte komerciale.

Java SE 17 është klasifikuar si një version me mbështetje afatgjatë (LTS), për të cilin do të lëshohen përditësime deri në vitin 2029. Lëshimi i përditësimeve për versionin e fundit të ndërmjetëm Java 16 është ndalur. Rama e kaluar LTS Java 11 do të mbështetet deri në vitin 2026. Lëshimi i ardhshëm LTS është parashikuar për shtator 2024. Kujtojmë se duke filluar nga lëshimi i Java 10, projekti kaloi në një proces të ri zhvillimi, që nënkupton një cikël më të shkurtër për formimin e lëshimeve të reja. Funksionaliteti i ri tani zhvillohet në një degë master që përditësohet vazhdimisht, në të cilën përfshihen ndryshimet e përfunduara dhe nga e cila çdo gjashtë muaj krijohen dega për stabilizimin e lëshimeve të reja.

Nga risitë e Java 17, mund të përmenden:

  • U ofrua njĂ« implementim eksperimental pĂ«r pĂ«rputhjen me modele nĂ« shprehjet «switch», qĂ« lejon pĂ«rdorimin e modeleve fleksibĂ«l nĂ« etiketat «case» qĂ« pĂ«rfshijnĂ« njĂ« seri vlerash, pĂ«r tĂ« cilat mĂ« parĂ« duhej tĂ« pĂ«rdoren zinxhirĂ« tĂ« gjata 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(); };
  • ËshtĂ« stabilizuar mbĂ«shtetja pĂ«r klasat dhe interfazet e vulosur («sealed»), tĂ« cilat nuk mund tĂ« pĂ«rdoren nga klasat dhe interfazet e tjera pĂ«r trashĂ«gimi, zgjerim ose tejkalim tĂ« implementimit. Klasat e vulosura ofrojnĂ« gjithashtu njĂ« mĂ«nyrĂ« mĂ« deklarative pĂ«r tĂ« kufizuar pĂ«rdorimin e superklasĂ«s, sesa modifikatorĂ«t e qasjes, tĂ« cilat bazohet nĂ« listimin 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 {
}
  • ËshtĂ« propozuar njĂ« realizim i dytĂ« i parakohshĂ«m i API Vector, duke ofruar funksione pĂ«r llogaritjet vektoriale, tĂ« cilat kryhen duke pĂ«rdorur udhĂ«zimet vektoriale tĂ« procesorĂ«ve x86_64 dhe AArch64 dhe lejojnĂ« gjithashtu qĂ« operacionet tĂ« zbatohen menjĂ«herĂ« pĂ«r disa vlera (SIMD). Ndryshe nga mundĂ«sitĂ« e ofruara nga kompajleri JIT HotSpot pĂ«r avtokompaktimin e operacioneve skalar, API i ri ofron mundĂ«sinĂ« pĂ«r tĂ« menaxhuar qartĂ« vektorizimin pĂ«r pĂ«rpunimin paralel tĂ« tĂ« dhĂ«nave.
  • ËshtĂ« shtuar njĂ« realizim i parakohshĂ«m i API Foreign Function & Memory, me ndihmĂ«n e tĂ« cilit aplikacionet mund tĂ« ndĂ«rveprojnĂ« me kodin dhe tĂ« dhĂ«nat qĂ« ndodhen jashtĂ« runtime Java. API i ri mundĂ«son thirrjen efektive tĂ« funksioneve qĂ« nuk ekzekutohen nĂ« JVM dhe qasjen nĂ« memorje qĂ« nuk menaxhohet nga JVM. PĂ«r shembull, mund tĂ« thirren funksione nga biblioteka tĂ« ndara tĂ« jashtme dhe tĂ« merret qasja nĂ« tĂ« dhĂ«nat e procesit pa pĂ«rdorimin e JNI.
  • Motori i vizatimit pĂ«r macOS, i cili siguron funksionimin e API Java 2D, i cili, nga ana e tij, angazhohet nĂ« API Swing, Ă«shtĂ« adapotuar pĂ«r pĂ«rdorimin e API grafike Metal. Me default, nĂ« platformĂ«n macOS vazhdon tĂ« pĂ«rdoret OpenGL, ndĂ«rsa pĂ«r tĂ« aktivizuar mbĂ«shtetje pĂ«r Metal kĂ«rkohet vendosja e parametrave «-Dsun.java2d.metal=true» dhe tĂ« ketĂ« tĂ« paktĂ«n versionin macOS 10.14.x.
  • ËshtĂ« shtuar njĂ« port pĂ«r platformĂ«n macOS/AArch64 (kompjuterĂ«t e Apple me çipet e reja Apple M1). Karakteristika e portit Ă«shtĂ« mbĂ«shtetje pĂ«r mekanizmin e mbrojtjes sĂ« memorjes W^X (Write XOR Execute), ku faqet e memories nuk mund tĂ« jenĂ« tĂ« aksesueshme njĂ«kohĂ«sisht pĂ«r shkruaj dhe ekzekutim. (Kodi mund tĂ« ekzekutohet vetĂ«m pasi tĂ« ndalohet shkrimi, dhe shkrimi nĂ« njĂ« faqe memorje Ă«shtĂ« i mundur vetĂ«m pas ndalimit tĂ« ekzekutimit).
  • Kthehu pĂ«rdorimin vetĂ«m tĂ« semantikĂ«s strikte (strictfp) pĂ«r shprehjet me fluturim tĂ« lĂ«ngshĂ«m. Ndalohet mbĂ«shtetje e disponueshme duke filluar nga lĂ«shimi i Java 1.2 pĂ«r semantikĂ«n «default», e cila pĂ«rfshinte thjeshtime pĂ«r tĂ« punuar nĂ« sisteme me procesorĂ« matematikorĂ« shumĂ« tĂ« vjetĂ«r x87 (pas shfaqjes sĂ« instrukcioneve SSE2, nevoja pĂ«r semantikĂ« tĂ« pĂ«rmirĂ«suar u zhduk).
  • JanĂ« realizuar tipe tĂ« reja ndĂ«rfaqesh pĂ«r gjeneratorĂ«t e numrave tĂ« rastĂ«sishĂ«m, si dhe janĂ« realizuar algoritme shtesĂ« pĂ«r njĂ« gjenerim mĂ« cilĂ«sor tĂ« numrave rastĂ«sishĂ«m. Aplikacionet e kanĂ« 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Ă«sishĂ«m.
  • ËshtĂ« zbatuar inkapsulimi i detyrueshĂ«m i fortĂ« i tĂ« gjithĂ« elementeve tĂ« brendshĂ«m tĂ« JDK, pĂ«rveç API-ve kritikĂ«, siç Ă«shtĂ« sun.misc.Unsafe. Inkapsulimi i fortĂ« bllokon pĂ«rpjekjet pĂ«r qasje nga kodi nĂ« klasa, metoda dhe fusha tĂ« brendshme. MĂ« parĂ«, mund tĂ« mbyllej moda e inkapsulimit tĂ« fortĂ« me opsionin «—illegal-access=permit», por tani Ă«shtĂ« shpallur e vjetĂ«ruar. PĂ«r aplikacionet qĂ« kĂ«rkojnĂ« akses nĂ« klasat, metodat dhe fushat e brendshme, duhet tĂ« pĂ«rcaktohen qartĂ« ato me opsionin «—add-opens» ose atributin Add-Opens nĂ« skedarin me manifest.
  • Aplikacionet kanĂ« mundĂ«sinĂ« tĂ« pĂ«rcaktojnĂ« filtrat pĂ«r deserializimin e tĂ« dhĂ«nave, tĂ« cilat mund tĂ« varen nga konteksti dhe tĂ« zgjidhen dinamikisht nĂ« lidhje me operacione tĂ« caktuara tĂ« deserializimit. Filtrat e caktuar janĂ« tĂ« aplikueshĂ«m pĂ«r tĂ« gjithĂ« makinĂ«n virtuale (JVM-wide), dmth. mbulojnĂ« jo vetĂ«m aplikacionin vetĂ«, por edhe libraritĂ« e jashtme tĂ« pĂ«rdorura nĂ« aplikacion.
  • NĂ« Swing Ă«shtĂ« shtuar metoda javax.swing.filechooser.FileSystemView.getSystemIcon pĂ«r ngarkimin e ikonave me madhĂ«si tĂ« madhe, duke lejuar pĂ«rmirĂ«simin e formimit tĂ« ndĂ«rfaqes nĂ« ekrane me dendĂ«si tĂ« lartĂ« pikselesh (HighDPI).
  • NĂ« API java.net.DatagramSocket Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r lidhjen me grupe Multicast pa qenĂ« e nevojshme pĂ«rdorimi i njĂ« API tĂ« veçantĂ« java.net.MulticastSocket.
  • ËshtĂ« pĂ«rmirĂ«suar utilitari IGV (Ideal Graph Visualizer), i cili ofron vizualizimin interaktiv tĂ« pĂ«rfaqĂ«simit tĂ« pĂ«rkohshĂ«m tĂ« kodit nĂ« kompilatorin JIT HotSpot VM C2.
  • NĂ« JavaDoc, me analogji me kompilatorin javac, kur raportohet njĂ« gabim tani jepet numri i rreshtit problematik nĂ« skedarin burimor dhe vendi i gabimit.
  • Shtesa e pronĂ«s native.encoding, qĂ« reflekton emrin e kodimit sistematik tĂ« karaktereve (UTF-8, koi8-r, cp1251, etj.).
  • Shtesa e interfesĂ«s java.time.InstantSource, e cila lejon manipulimin e kohĂ«s pa u lidhur me zonĂ«n kohore.
  • Shtesa e API java.util.HexFormat pĂ«r konvertimin nĂ« pĂ«rfaqĂ«simin nĂ« gjashtĂ«dhjetĂ« dhe anasjelltas.
  • NĂ« kompilator Ă«shtĂ« shtuar modaliteti blackhole, qĂ« çaktivizon operacionet e pĂ«rjashtimit tĂ« kodit tĂ« pa pĂ«rdorur (eliminimi i kodit tĂ« vdekur), i cili mund tĂ« pĂ«rdoret gjatĂ« testimeve tĂ« performancĂ«s.
  • NĂ« Runtime Ă«shtĂ« shtuar opsioni "-Xlog:async" pĂ«r regjistrimin e logĂ«ve nĂ« modalitet asinkron.
  • PĂ«r krijimin e lidhjeve tĂ« sigurta, tani pĂ«rdoret si e dhĂ«nĂ« TLS 1.3 (mĂ« parĂ« pĂ«rdorej TLS 1.2).
  • ËshtĂ« kaluar nĂ« kategorinĂ« e planifikuar pĂ«r fshirje API Applet (java.applet.Applet*, javax.swing.JApplet), i shpallur mĂ« parĂ« si tĂ« vjetĂ«r, qĂ« pĂ«rdorej pĂ«r tĂ« nisur aplikacionet Java nĂ« shfletues (nuk ka mĂ« kuptim pas ndĂ«rprerjes sĂ« mbĂ«shtetjes pĂ«r plug-in-in e Java pĂ«r shfletuesit).
  • ËshtĂ« kaluar nĂ« kategorinĂ« e planifikuar pĂ«r fshirje Security Manager, i cili ka humbur shumĂ« vlerĂ« dhe Ă«shtĂ« bĂ«rĂ« i panevojshĂ«m pas ndĂ«rprerjes sĂ« mbĂ«shtetjes pĂ«r plug-in-in e shfletuesit.
  • ËshtĂ« hequr mekanizmi RMI Activation, i cili Ă«shtĂ« bĂ«rĂ« i vjetruar, Ă«shtĂ« kaluar nĂ« opsion qĂ« nĂ« Java 8 dhe pothuajse nuk pĂ«rdoret nĂ« praktikĂ«n moderne.
  • Nga SDK Ă«shtĂ« hequr kompilatori eksperimental, i cili mbĂ«shtet JIT (just-in-time) pĂ«r kompilim dinamik tĂ« kodit Java pĂ«r HotSpot JVM, si dhe modaliteti i kompilim tĂ« parashikuar (AOT, ahead-of-time) tĂ« klasave nĂ« kodin makinerik para nisjes sĂ« makinĂ«s virtuale. Kompilatori Ă«shtĂ« shkruar nĂ« Java dhe bazohet nĂ« punimet e projektit Graal. Theksohet se mbĂ«shtetja e kompilatorit kĂ«rkon njĂ« sasi tĂ« madhe pĂ«rpjekjesh, tĂ« cilat nuk justifikohen nĂ« kushtet e mungesĂ«s sĂ« pĂ«rdorueshmĂ«risĂ« nga zhvilluesit.

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