Java SE 20 leidimas

Po šešių mėnesių kūrimo, „Oracle“ išleido „Java SE 20“ („Java Platform, Standard Edition 20“) platformą, kuri naudoja OpenJDK atvirojo kodo projektą kaip atskaitos įgyvendinimą. Išskyrus kai kurių pasenusių funkcijų pašalinimą, „Java SE 20“ palaiko atgalinį suderinamumą su ankstesniais „Java“ platformos leidimais – dauguma anksčiau parašytų „Java“ projektų vis tiek veiks be pakeitimų, kai bus vykdomi naudojant naują versiją. Diegiamos Java SE 20 versijos (JDK, JRE ir Server JRE) yra paruoštos Linux (x86_64, AArch64), Windows (x86_64) ir macOS (x86_64, AArch64). Sukurtas OpenJDK projekto, Java 20 nuorodos diegimas yra visiškai atviras pagal GPLv2 licenciją su GNU ClassPath išimtimis, kad būtų galima dinamiškai susieti su komerciniais produktais.

„Java SE 20“ klasifikuojama kaip įprastas palaikymo leidimas ir bus atnaujinamas iki kito leidimo. Ilgalaikio palaikymo (LTS) filialas turėtų būti Java SE 17, kuris ir toliau gaus atnaujinimus iki 2029 m. Priminsime, kad nuo „Java 10“ išleidimo projektas perėjo prie naujo kūrimo proceso, o tai reiškia trumpesnį naujų leidimų formavimo ciklą. Naujos funkcijos dabar sukurtos vienoje nuolat atnaujinamoje pagrindinėje šakoje, kuri apima paruoštus pakeitimus ir iš kurios šakos kas šešis mėnesius atšakojamos siekiant stabilizuoti naujus leidimus.

Naujos „Java 20“ funkcijos apima:

  • Yra preliminarus „Scoped Values“ palaikymas, leidžiantis nekeičiamais duomenimis dalytis gijomis ir veiksmingai keistis tarp antrinių gijų (vertės yra paveldimos). Apimtos reikšmės yra kuriamos siekiant pakeisti gijų vietinių kintamųjų mechanizmą ir yra efektyvesnės naudojant labai daug virtualių gijų (tūkstančiai ar milijonai gijų). Pagrindinis skirtumas tarp apimamų verčių ir gijos vietinių kintamųjų yra tas, kad pirmieji įrašomi vieną kartą, jų negalima keisti ateityje ir lieka pasiekiami tik gijos vykdymo metu. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void tarnauti(Užklausos užklausa, Atsakymo atsakymas) { var level = (užklausa. isAuthorized()? ADMINAS : SVEČIAS); 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()) mesti naują InvalidUserException(); grąžinti naują DBConnection(...); } }
  • Pridėta antroji įrašų šablonų peržiūra, praplečianti „Java 16“ įdiegtą šablonų atitikimo funkciją, kad būtų galima analizuoti įrašų klasių reikšmes. Pavyzdžiui: įrašas Taškas(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Pridėtas ketvirtas preliminarus šablonų atitikimo „switch“ teiginiuose diegimas, leidžiantis „atvejo“ etiketėse naudoti ne tikslias reikšmes, o lanksčius modelius, apimančius eilę reikšmių vienu metu, kurioms anksčiau reikėjo naudoti sudėtingas. „jei... kitaip“ posakių grandinės. 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(); }; }
  • Pridėtas antrasis preliminarus FFM (Foreign Function & Memory) API diegimas, leidžiantis organizuoti Java programų sąveiką su išoriniu kodu ir duomenimis iškviečiant funkcijas iš išorinių bibliotekų ir pasiekiant atmintį ne JVM.
  • Pridėta antra virtualių gijų peržiūra. Tai lengvos gijos, kurios labai supaprastina našių kelių gijų programų rašymą ir priežiūrą.
  • Pridėta antra eksperimentinė API, skirta struktūriniam lygiagretumui, kuri supaprastina kelių gijų taikomųjų programų kūrimą, nes kelias užduotis, vykdomas skirtingose ​​gijose, traktuoja kaip vieną bloką.
  • Pridėta penktoji Vector API peržiūra, teikianti vektorinių skaičiavimų funkcijas, kurios atliekamos naudojant vektorines instrukcijas x86_64 ir AArch64 procesoriuose ir leidžiančios vienu metu taikyti operacijas kelioms reikšmėms (SIMD). Skirtingai nuo HotSpot JIT kompiliatoriaus galimybių, skirtų automatiniam skaliarinių operacijų vektorizavimui, nauja API leidžia aiškiai valdyti vektorizavimą lygiagrečiam duomenų apdorojimui.

Šaltinis: opennet.ru

Добавить комментарий