Publikimi i Java SE 20

Pas gjashtë muajsh zhvillimi, Oracle ka lëshuar platformën Java SE 20 (Java Platform, Standard Edition 20), e cila përdor projektin OpenJDK me burim të hapur si një zbatim referencë. Me përjashtim të heqjes së disa veçorive të vjetruara, Java SE 20 ruan përputhshmërinë e prapambetur me versionet e mëparshme të platformës Java—shumica e projekteve Java të shkruara më parë do të vazhdojnë të funksionojnë pa modifikuar kur ekzekutohen sipas versionit të ri. Ndërtimet e instalueshme të Java SE 20 (JDK, JRE dhe Server JRE) përgatiten për Linux (x86_64, AArch64), Windows (x86_64) dhe macOS (x86_64, AArch64). Zhvilluar nga projekti OpenJDK, zbatimi i referencës Java 20 është plotësisht me burim të hapur nën licencën GPLv2 me përjashtime të GNU ClassPath për të lejuar lidhjen dinamike me produktet komerciale.

Java SE 20 kategorizohet si një version i rregullt mbështetës, me përditësime që do të lëshohen përpara lëshimit të ardhshëm. Dega Long Term Support (LTS) duhet të jetë Java SE 17, e cila do të marrë përditësime deri në vitin 2029. Kujtojmë se duke filluar me lëshimin e Java 10, projekti kaloi në një proces të ri zhvillimi, i cili nënkupton një cikël më të shkurtër për formimin e publikimeve të reja. Funksionaliteti i ri po zhvillohet tani në një degë kryesore të përditësuar vazhdimisht, e cila përfshin ndryshime tashmë të përfunduara dhe nga e cila degët degëzohen çdo gjashtë muaj për të stabilizuar publikimet e reja.

Karakteristikat e reja në Java 20 përfshijnë:

  • Ekziston mbështetje paraprake për Vlerat e Scoped, duke lejuar që të dhënat e pandryshueshme të ndahen nëpër thread dhe të dhënat të shkëmbehen në mënyrë efikase midis threads-ve (vlerat trashëgohen). Vlerat e shtrirjes janë duke u zhvilluar për të zëvendësuar mekanizmin e variablave thread-lokale dhe janë më efikase kur përdoren një numër shumë të madh të thread-eve virtuale (mijëra ose miliona thread). Dallimi kryesor midis Vlerave të Scoped dhe variablave thread-local është se të parat shkruhen një herë, nuk mund të ndryshohen në të ardhmen dhe mbeten të disponueshme vetëm për kohëzgjatjen e ekzekutimit të thread-it. class Server { static final ScopedValue CURRENT_USER = new ScopedValue(); shërbimi i pavlefshëm(Kërkesa e kërkesës, përgjigja e përgjigjes) { niveli var = (kërkesa. është e autorizuar()? ADMIN : GUEST); var përdorues = Përdorues i ri (niveli); ScopedValue.where(CURRENT_USER, përdorues).run(() -> Application.handle(kërkesë, përgjigje)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); nëse (!user.canOpen()) hedh të ri InvalidUserException(); ktheni lidhjen e re DBC(...); } }
  • Është shtuar një vrojtim i dytë i modeleve të regjistrimit, duke zgjeruar veçorinë e përputhjes së modelit të prezantuar në Java 16 për të analizuar vlerat e klasave të rekordeve. Për shembull: regjistro Point(int x, int y) {} static void printSum(Object obj) { if (obj instance of Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Është shtuar një zbatim i katërt paraprak i përputhjes së modeleve në deklaratat "ndërprerës", duke lejuar etiketat "rast" të përdorin jo vlera të sakta, por modele fleksibël që mbulojnë një sërë vlerash menjëherë, për të cilat më parë ishte e nevojshme të përdoreshin të rëndë. zinxhirë shprehjesh “nëse... tjetër”. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Numri i plotë 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ë implementim i dytë paraprak i API-së FFM (Foreign Function & Memory), i cili ju lejon të organizoni ndërveprimin e programeve Java me kodin dhe të dhënat e jashtme përmes thirrjes së funksioneve nga bibliotekat e jashtme dhe aksesit të memories jashtë JVM.
  • Është shtuar një vrojtim i dytë i temave virtuale, të cilat janë tema të lehta që thjeshtojnë shumë shkrimin dhe mirëmbajtjen e aplikacioneve me shumë fije me performancë të lartë.
  • U shtua një API e dytë eksperimentale për paralelizmin e strukturuar, i cili thjeshton zhvillimin e aplikacioneve me shumë fije duke trajtuar detyra të shumta që ekzekutohen në fije të ndryshme si një bllok i vetëm.
  • Është shtuar një vrojtim i pestë i Vector API, duke ofruar funksione për llogaritjet e vektorit që kryhen duke përdorur udhëzime vektoriale në procesorët x86_64 dhe AArch64 dhe lejojnë që operacionet të zbatohen njëkohësisht në vlera të shumta (SIMD). Ndryshe nga aftësitë e ofruara në përpiluesin HotSpot JIT për vektorizimin automatik të operacioneve skalare, API i ri bën të mundur kontrollin e qartë të vektorizimit për përpunimin paralel të të dhënave.

Burimi: opennet.ru

Shto një koment