Java SE 20 vÀljalase

PĂ€rast kuue kuu arendustöö on Oracle vĂ€lja andnud Java SE 20 platvormi (Java Platform, Standard Edition 20), mille etalonrakenduseks on avatud projekti OpenJDK kasutamine. Vaatamata mĂ”nede aegunud vĂ”imaluste eemaldamisele sĂ€ilitab Java SE 20 tagurpidi ĂŒhilduvuse varasemate Java versioonidega — enamik varem kirjutatud Java projekte töötab uue versiooni all muutusteta. Paigaldusvalmis Java SE 20 kogumid (JDK, JRE ja Server JRE) on ette valmistatud Linuxile (x86_64, AArch64), Windowsile (x86_64) ja macOS-ile (x86_64, AArch64). OpenJDK projekti raames vĂ€lja töötatud Java 20 etalonrakendus on tĂ€ielikult avatud GPLv2 litsentsi alusel koos GNU ClassPath eranditega, mis lubavad dĂŒnaamilist sidumist kommertsproduktidega.

Java SE 20 kuulub tavapĂ€rase toetuse perioodi all olevate vĂ€ljaannete hulka, mille uuendusi antakse vĂ€lja jĂ€rgmise vĂ€ljaande ilmumiseni. Pikaajalise toetuse (LTS) jaoks tuleks kasutada Java SE 17, mille uuendusi antakse vĂ€lja kuni 2029. aastani. Tuletame meelde, et alates Java 10 vĂ€ljaandest on projekt lĂ€inud uuele arendusprotsessile, mis hĂ”lmab lĂŒhemat uute vĂ€ljalaskeketide tsĂŒklit. Uut funktsionaalsust arendatakse nĂŒĂŒd pidevalt uuendatavamas master-haru, kuhu lisatakse juba valmis muudatused ja kust kuue kuu tagant hargnevad harud uute vĂ€ljalaskete stabiliseerimiseks.

Java 20 uuendustes vÔib vÀlja tuua:

  • Pakutakse piiratud vÀÀrtuste (Scoped Values) eeltoetust, mis vĂ”imaldavad jagada muutumatuid andmeid voogudes ja tĂ”husalt vahetada andmeid alavoogude vahel (vÀÀrtused pĂ€rinevad). Scoped Values arenevad vĂ€lja voogude kohalike muutuja (thread-local variables) mehhanismi asendamiseks ning on tĂ”husamad, kui kasutatakse vĂ€ga suurt arvu virtuaalseid voogusid (tuhandeid ja miljoneid vooge). Peamine erinevus Scoped Values'i ja kohalike muutuja vahel on see, et esimesed salvestatakse ainult ĂŒks kord, neid ei saa hiljem muuta ja need jÀÀvad kĂ€ttesaadavaks ainult voolu tĂ€itmise ajaks. 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(
); } }
  • Lisatud on teine prooviversioon salvestusmallide (record pattern) jaoks, mis laiendab Java 16-s introduceeritud vĂ”imalust kasutada vĂ€liandmete mustrite https:// www.oracle.com/tehnikamuutmete/uue-pĂ”lvkonna-rakenduste-projekti-asanew-projects-a/new-monitor-rolling-releases-asu-rollin-asu-rollin-asu-new-monitor-rolling-resourcen-a-vĂ€lja-andmised-pĂ€rimine (record). NĂ€iteks: 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); } }
  • Lisatud on neljas prooviversioon mustri uue rakenduse avaldumiseks «switch», mis vĂ”imaldab «case» siltidel kasutada mitte tĂ€pseid vÀÀrtusi, vaid paindlikke malli, mis katab kohe seriaali vÀÀrtusi, mille jaoks oli varem vaja kasutada mahukaid tingimuslauseid «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(); }; }
  • Lisatud on teine prooviversioon API FFM (Foreign Function & Memory), mis vĂ”imaldab Java-programmidel suhelda vĂ€lise koodi ja andmetega, kutsudes funktsioone vĂ€listest teekidest ja pÀÀsemiseks JVM-ist vĂ€ljastpoolt.
  • Lisatud on teine eelnĂ”u virtuaalsetest voogudest, mis on kerged vood, oluliselt lihtsustades kĂ”rge jĂ”udlusega mitme lĂ”imega rakenduste kirjutamist ja hooldamist.
  • Lisatud on teine variant eksperimentaalsest API-st struktureeritud paralleelsuse jaoks, mis lihtsustab mitme lĂ”imega rakenduste arendamist, vĂ”imaldades töödelda mitmeid ĂŒlesandeid, mis on tĂ€idetud erinevates voogudes, nagu ĂŒhtset plokki.
  • Lisatud on viies eelnĂ”u API Vectorist, mis pakub funktsioone vektorkalkulatsioonide jaoks, mis toimuvad x86_64 ja AArch64 protsessorite vektorinstruktsioonide abil ning vĂ”imaldavad korraga rakendada operatsioone mitmele vÀÀrtusele (SIMD). Erinevalt HotSpot JIT-kĂ”mbliku pakutavatest automaatvektorimise vĂ”imalustest skalaartöötluse jaoks, annab uus API vĂ”imaluse selgelt hallata vektoriseerimist andmete paralleelse töötlemise jaoks.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster