Java SE 25 LTS un OpenJDK 25 izlaišana

Pēc sešu mēnešu izstrādes uzņēmums Oracle publicēja Java SE 25 platformu (Java Platform, Standard Edition 24), kuras etalona realizācijai tiek izmantots atvērtais projekts OpenJDK. Izņemot dažādu novecojušu iespēju izņemšanu, Java SE 25 saglabā atpakaļsaderību ar iepriekšējiem Java platformas izdevumiem — lielākā daļa agrāk rakstīto Java projektu darbosies bez izmaiņām, palaižot tos jaunajā versijā. Instalācijai gatavas Java SE 25 versijas (JDK, JRE un Server JRE) ir sagatavotas Linux (x86_64, AArch64), Windows (x86_64) un macOS (x86_64, AArch64). OpenJDK projektā izstrādātā Java SE 25 etalona realizācija ir pilnībā atvērta saskaņā ar GPLv2 licenci ar izņēmumiem GNU ClassPath, kas atļauj dinamisku saistīšanu ar komerciāliem produktiem.

Java SE 25 ir klasificēta kā izdevums ar pagarinātu atbalsta termiņu, atjauninājumi tam tiks izlaisti līdz 2033. gadam (publiskie atjauninājumi tiks izlaisti līdz 2030. gada septembrim). Arī Java SE 17 un 21 turpina atbalstu ilginātā termiņā (LTS), atjauninājumi tām tiks izlaisti līdz 2029. un 2031. gadam, attiecīgi (publiskie — līdz 2026. un 2028. gadam). Paplašinātais atbalsts LTS izdevumiem Java SE 8 un 11 ilgs līdz 2030. un 2032. gadam.

Starptautisku jauninājumu saraksts Java SE 25 (1, 2, 3, 4):

  • Tika pievienots eksperimentos API StableValue, lai strādātu ar objektiem, kas satur nemainīgus datus un tiek apstrādāti JVM kā konstantes. Šādiem objektiem tiek piemērotas veiktspējas optimizācijas, kas ir līdzīgas laukiem ar atslēgvārdu "final". API StableValue atdala pastāvīgu vērtību izveidi un to inicializāciju, garantējot, ka vērtība var tikt inicializēta tikai vienu reizi, samazina programmu palaišanas laiku un ļauj lietotāju kodā lietot konstantes samazināšanas optimizācijas (constant-folding), kas iepriekš tika izmantotas tikai JDK iekšējā kodā. class Application { \/\/ Bija: \/\/ static final UserService USERS = new UserService(); \/\/ Kļuva: static final StableValue<UserService> USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Tika pievienots eksperimentāls API priekš objektu kodēšanas un dekodēšanas ar kriptogrāfijas atslēgām, sertifikātiem un atceltu sertifikātu sarakstiem, izmantojot PEM (Pivacy-Enhanced Mail) formātu.
  • Pievienota atbalsta ierobežotā vērtību izmantošanai (Scoped Values), kas ļauj koplietot nemainīgus datus pavadošajos procesus un efektīvi apmainīties ar datiem starp apakšprocesiem (vērtības tiek manto nākta). Scoped Values attīstās, lai aizstātu pavedienam lokālo mainīgo mehānismu (thread-local variables) un ir efektīvāki, kad tiek izmantots ļoti liels virtuālo pavedienu skaits (tūkstoši un miljoni pavedienu). Galvenā atšķirība starp Scoped Values un pavedienam lokālajiem mainīgajiem ir tā, ka pirmie tiek ierakstīti vienreiz, tālāk tos nevar mainīt un tie paliek pieejami tikai pavediena izpildes laikā.
  • Pievienots API kriptogrāfisko atslēgu veidošanas funkciju izmantošanai (KDF, key derivation function), kas ļauj veidot papildu atslēgas vajadzīgajā garumā, pamatojoties uz slepeno atslēgu (piemēram, paroli) un nejaušā datu kopuma.
  • Noņemts kods un apkopošanas skripti 32-bit x86 sistēmu atbalsta nodrošināšanai. 32-bit x86 sistēmu atbalsta pārtraukšana ir ļāvusi vienkāršot infrastruktūru JDK apkopošanai un testēšanai, kā arī īstenot iespējas, kas saistītas ar platformām, bez atkārtojamām apstrādātāju izveidēm 32-bit x86 sistēmām.
  • Pievienota iespēja izmantot vienu izteiksmi „import module M” lai importētu uzreiz visus pakotnes, ko eksportē norādītais modulis. Šī izmaiņa būtiski vienkāršo moduļu bibliotēku atkārtotu izmantošanu, ļaujot pievienot bibliotēkas un klases bez to atrašanās vietas definēšanas pakotņu hierarhijā. Piemēram, norādot „import module java.base”, tiks importēti visi 54 pakotnes, kas ietilpst modulī java.base, kuras iepriekš būtu jānorāda atsevišķi („import java.io.*”, „import java.util.*” utt.).
  • Ieteikts kompakts programmu noformējuma variants, kas var būt noderīgs apmācībā un mazu lietojumprogrammu izstrādē. Kompaktā formā nav nepieciešams definēt liekas klases, automātiski tiek importēti standarta API un pieejami vienkāršoti ievades/izvades metode. Piemēram, lietojumprogramma „Hello, World!” var tikt samazināta līdz: void main() { IO.println(„Hello, World!”); }
  • Atļauts norādīt izteiksmju konstruktorus pirms super(…) izsaukuma, ko izmanto, lai izsauktu vecāku klases konstruktoru no mantojotā klases konstruktora, ja šie izteikumi nesauc uz izveidoto konstruktoru instanci. class Outer { void hello() { System.out.println(„Hello“); } class Inner { Inner() { hello(); super(); } } }
  • Ievadīts ģeneratīvs atkritumu savācēja Shenandoah režīms, kurā atsevišķi apstrādā vecus un nesen izveidotus objektus, lai palielinātu efektivitāti objektu tīrīšanā ar īsu mūža ilgumu. Jaunais režīms nodrošina paredzamāku caurlaidspēju, izturību pret slodzes izmaiņām un samazinātu atmiņas patēriņu, veicot atkritumu savākšanu. Shenandoah plānotājs mērķē samazināt apstāšanās laiku atkritumu savākšanas laikā, veicot lielāku apjomu darba paralēli ar Java lietojumprogrammām.
  • Atvieglota keša izveide priekšā (Ahead-of-Time) ielādēšanai un klasēm, kas ļauj paātrināt HotSpot JVM palaišanu, izmantojot klases jau ielādētā un kompilētā stāvoklī. Palaižot vairs nevajag atsevišķas darbības aktivitātes ierakstīšanai un keša veidošanai, pietiek ar vienu komandu: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App …
  • Palaidot HotSpot Java VM, tiek ieviesta iespēja izmantot metožu izpildes profilus, kas iegūti iepriekšējā lietojumprogrammas palaišanā. Izmaiņas ļauj JIT kompilatoram iztikt bez statistikas vērtēšanas un uzreiz sākt ģenerēt natīvo kodu bez profila veidošanas gaidīšanas.
  • HotSpot JVM ir ieviesta atbalsts kompaktiem objektu virsrakstiem, kuru izmērs 64 bitu sistēmās samazināts no 96 līdz 64 bitiem (no 12 līdz 8 baitiem). Virsrakstu izmēra samazināšana ļauj samazināt kausa apjomu un palielināt keša darbības efektivitāti.
  • Tika ir piedāvāta testēšanai API Vector, kas nodrošina funkcijas vektoru aprēķiniem, kas tiek veikti, izmantojot vektoru procesoru x86_64 un AArch64 instrukcijas un ļauj vienlaikus piemērot operācijas vairākiem vērtībām (SIMD). Atšķirībā no HotSpot JIT kompilatora nodrošinātajām automātiskās vektorizācijas iespējām skalarītām operācijām, jaunais API ļauj skaidri pārvaldīt vektorizāciju datu paralēlai apstrādei.
  • Testēšanai piedāvāts piektais priekšizdevums API strukturētajam paralēlismam (Structured Concurrency), kas atvieglo vairāku pavedienu lietotņu izstrādi, apstrādājot vairākas uzdevumus, kas tiek izpildīti dažādos pavedienos, kā vienu bloku.
  • Paraugu saskaņošanas mehānismā piedāvāts trešais priekšizdevums primitīvo tipu (int, byte, char un citu pamatveidu, kas nav objekti) izmantošanai visos veidu veidlapās, operatorā «instanceof» un «switch» blokos. switch (x.getStatus()) { case 0 -> «okay»; case 1 -> «warning»; case 2 -> «error»; case int i -> «unknown status: » + i; } if (i instanceof byte b) { … b … }
  • JDK Flight Recorder (JFR) ir pievienota eksperimentāla atbalsta resursu patēriņa profiliem ar precīzāku CPU patēriņa izsekošanu Linux platformā. Informācija par dažādo konstrukciju izpildes laiku var tikt vizualizēta, izmantojot krāsainos diagrammus «FlameGraph».
  • Paaugstināta JDK Flight Recorder (JFR) stabilitāte, veicot asinkronās Java pavedienu steku paraugu ņemšanu, apejot izsaukumu stekus tikai «drošajos punktos» (safepoints).
  • JDK Flight Recorder (JFR) ir pievienoti izsekošanas un metožu izpildes laika novērtējuma rīki. Tiek atbalstīta konkrētu metožu izsaukumu steka izsekošana un precīzas statistikas par metožu izsaukumiem reģistrēšana, ietverot tādas metrikas kā izpildes laiks un izsaukumu skaits.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster