Java SE 25 LTS ja OpenJDK 25 vÀljaanne

PĂ€rast kuut kuud arendust on Oracle vĂ€lja andnud Java SE 25 (Java Platform, Standard Edition 24), milleks on avatud projekti OpenJDK referentsrakendus. VÀÀrib mĂ€rkimist, et Java SE 25 sĂ€ilitab tagasiĂŒhilduvuse varasemate Java platvormi vĂ€ljaannetega, vĂ€lja arvatud mĂ”ned aegunud funktsioonid. Enamik varasemaid Java projekte töötab uue versiooni all muutmata kujul. Paigaldusvalmis Java SE 25 kogumid (JDK, JRE ja Server JRE) on saadaval Linuxi (x86_64, AArch64), Windowsi (x86_64) ja macOSi (x86_64, AArch64) jaoks. OpenJDK projekti raames vĂ€lja töötatud Java SE 25 referentsrakendus on tĂ€ielikult avatud GPLv2 litsentsi alusel, mis sisaldab GNU ClassPath'i erandeid, mis lubavad dĂŒnaamilist sidumist kommertstootedega.

Java SE 25 kuulub pikendatud toetuse vÀljaannete hulka, mille uuendusi vÀljastatakse kuni 2033. aastani (avalikud uuendused ilmuvad kuni septembri 2030). Pikendatud toetuse (LTS) versioonid Java SE 17 ja 21 jÀtkavad samuti tuge saamist, mille uuendusi vÀljastatakse kuni 2029. ja 2031. aastani, vastavalt (avalikud - kuni 2026. ja 2028. aastani). LTS-versioonide Java SE 8 ja 11 pikendatud toetus kestab kuni 2030. ja 2032. aastani.

Java SE 25 uute funktsioonide hulgas (1, 2, 3, 4):

  • Lisatud katselik API StableValue, et töötada objektidega, mis sisaldavad muutumatuid andmeid ja mida töödeldakse JVM-is nagu konstante. Sellistele objektidele rakendatakse jĂ”udluse optimeerimisi, mis sarnanevad „final“ mĂ€rksĂ”naga seotud vĂ€ljadega. API StableValue eraldab pĂŒsivÀÀrtuste loomise ja nende initsialiseerimise, tagades, et vÀÀrtus saab initsialiseeritud ainult ĂŒks kord, lĂŒhendades programmide kĂ€ivitusaega ja vĂ”imaldades kasutada kasutajakoodis konstandi kokkuvĂ”tmise (constant-folding) optimeerimisi, mida varem kasutati ainult JDK sisekoodis. class Application { \/\/ Oli: \/\/ static final UserService USERS = new UserService(); \/\/ Sai: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • Lisatud katselik API krĂŒptograafiliste vĂ”tmete, sertifikaatide ja tagasivĂ”etud sertifikaatide loendite kodeerimiseks ja dekodeerimiseks, kasutades PEM (Pivacy-Enhanced Mail) formaati.
  • Lisatud toetuse piiratud vÀÀrtuste (Scoped Values) jaoks, mis vĂ”imaldavad jagada muutumatut teavet lĂ”imedes ja tĂ”husalt vahetada andmeid laste lĂ”imede vahel (vÀÀrtused pĂ€rinevad). Scoped Values arendatakse vĂ€lja, et asendada lĂ”imed lokaalsete muutujate mehhanismi ja olla efektiivsem, kui kasutatakse vĂ€ga suurt arvu virtuaalseid lĂ”ime (tuhanded ja miljonid lĂ”imed). Peamine erinevus Scoped Values ja lĂ”ime kohalike muutujate vahel on see, et esimesed salvestatakse ĂŒhe korra, neid ei saa hiljem muuta ja need jÀÀvad kergesti kĂ€ttesaadavaks ainult lĂ”ime tĂ€itmise ajaks.
  • Lisatud API krĂŒptograafiliste vĂ”tme tuletamise funktsioonide (KDF, key derivation function) kasutamiseks, mis vĂ”imaldavad luua lisavĂ”tmeid vajaliku pikkusega pĂ”hinedes salajasele vĂ”tmele (nt parool) ja juhuslikule andmekogumile.
  • 32-bit x86 sĂŒsteemide toetus on eemaldatud, samuti on lĂ”petatud nende toetamine. See lihtsustas JDK koostamise ja testimise infrastruktuuri, muutes vĂ”imalikuks platvormipĂ”histe funktsioonide rakendamise ilma backup-lahendite loomiseta 32-bitiste sĂŒsteemide jaoks.
  • Lisatud on vĂ”imalus kasutada ĂŒhte vĂ€ljendit «import module M», et importida kohe kĂ”iki pakette, mida mÀÀratud moodul ekspordib. See muudatus lihtsustab mĂ€rkimisvÀÀrselt moodulite raamatukogude taaskasutamist, vĂ”imaldades raamatukogude ja klasside sidumist ilma nende asukoha mÀÀramata pakettide hierarhias. NĂ€iteks on vĂ€ljend «import module java.base» kĂ”ik 54 paketti, mis kuuluvad moodulisse java.base, imporditud, mida varem tuli eraldi mainida («import java.io.*», «import java.util.*» jne).
  • Pakutakse kompaktset programmide vormindamise varianti, mis vĂ”ib olla kasulik Ă”ppimiseks ja vĂ€ikeste rakenduste arendamiseks. Kompaktsetes vormides ei ole vaja mÀÀrata ĂŒleliigseid klasse, tĂŒĂŒpilised API-d imporditakse automaatselt ja lihtsustatud sisenemise/vĂ€ljumise meetodid on kergesti saadaval. NĂ€iteks rakendus "Tere, maailm!" saab kokku vĂ”tta jĂ€rgmiselt: void main() { IO.println("Tere, maailm!"); }
  • Lubatud on vĂ€ljendite mÀÀramine konstruktorites enne super(
) kutsumist, mida kasutatakse ĂŒlemclasse konstruktorist selgesĂ”naliseks kutsumiseks, kui need vĂ€ljendid ei viita konstruktoriga loodud eksemplarile. class Outer { void hello() { System.out.println("Tere"); } class Inner { Inner() { hello(); super(); } } }
  • Shenandoah prĂŒgikorraldaja on lisatud generatiivne tööreĆŸiim, kus vanu ja hiljuti loodud objekte töödeldakse eraldi, et parandada lĂŒhiajaliste objektide puhastamise efektiivsust. Uus reĆŸiim tagab prognoositavama lĂ€bilaskevĂ”ime, koormuse muutuse taluvuse ja mĂ€lu tarbimise vĂ€henemise prĂŒgikorralduse ajal. Shenandoah planeerija on suunatud prĂŒgikorralduse peatamisaegade vĂ€hendamisele, tehes rohkem tööd samaaegselt Java rakenduste tĂ€itmisega.
  • Klasside AOT (Ahead-of-Time) laadimise ja koostamise vahemĂ€lu loomine on lihtsustatud, mis vĂ”imaldab kiirendada HotSpot JVM-i kĂ€ivitamist, kasutades juba laaditud ja kokku pandud seisundis olevaid klasse. KĂ€ivitamisel ei ole enam eraldi toimingute tegemine vajaminev aktiivsuse salvestamiseks ja vahemĂ€lu loomiseks, piisab ĂŒhest kĂ€sust: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App 

  • HotSpot Java VM kĂ€ivitamisel on rakendatud meetodite tĂ€itmisprofiilide kasutamise vĂ”imalus, mis on saadud eelmise rakenduse kĂ€ivitamisel. See muudatus vĂ”imaldab JIT-kompilaatoril koguda statistikat vahele jĂ€tmata ning kohe alustada native koodi genereerimist ilma profiili koostamise ootamiseta.
  • HotSpot JVM-is on rakendatud kompaktsete objektide pĂ€iste toetamist, mille suurus 64-bitistes sĂŒsteemides on vĂ€henenud 96 bite 64 bitini (12 bait 8 baiti). Peade suuruse vĂ€hendamine aitab vĂ€hendada mĂ€lu suurust ja suurendab vahemĂ€lu töö efektiivsust.
  • On esitletud testversioon API Vector, mis pakub funktsioone vektorkalkulatsioonide jaoks, mis viiakse ellu x86_64 ja AArch64 protsessorite vektorkĂ€skude abil ning vĂ”imaldavad samaaegselt rakendada operatsioone mitmele vÀÀrtusele (SIMD). Erinevalt HotSpot JIT-kompilaatori pakutavatest skalaarsate operatsioonide automaatvektorimise vĂ”imalustest, annab uus API selge juhtimise vektoriseerimiseks paralleelse andmetöötluse jaoks.
  • Testimiseks on saadaval viies eelvariant API-st struktureeritud paralleelsuse (Structured Concurrency) jaoks, mis lihtsustab mitme töötlusprotsessi rakenduste arendust, vĂ”imaldades töödelda erinevates lĂ”imedes tĂ€idetavaid ĂŒlesandeid kui ĂŒhtset plokki.
  • MudelipĂ”hise vĂ”rdlemise mehhanismis on esitatud kolmas eelvariant primitiivsete tĂŒĂŒpide (int, byte, char ja muud pĂ”hiteendid, mis ei ole objektid) kasutamise vĂ”imaluseks kĂ”igis mallides, 'instanceof' operaatori ja 'switch' plokkides. switch (x.getStatus()) { case 0 -> «okei»; case 1 -> «hoiatus»; case 2 -> «viga»; case int i -> «tundmatu olek: » + i; } if (i instanceof byte b) { 
 b 
 }
  • JDK Flight Recorderis (JFR) on lisatud katsetav tugi profiliseerimiseks, mille puhul jĂ€lgitakse Linuxi platvormil CPU ressursikasutust tĂ€psemalt. Erinevate konstruktsioonide kĂ€itusaega saab visuaalselt esitada vĂ€rviliste «FlameGraph» diagrammide abil.
  • JDK Flight Recorderi (JFR) töö stabiilsust on parandatud, kui Java lĂ”imede virnade asĂŒnkroonse proovivĂ”tu korral, vĂ€ltides kutsungite virna ainult «turvalistes punktides» (safepoints).
  • JDK Flight Recorderis (JFR) lisatud meetodite jĂ€lgimise ja tĂ€itmise aja hindamise tööriistad. Toetatakse konkreetsete meetodite kutsumise jĂ€relmĂ”tlemise jĂ€lgimist ja tĂ€psete statistiliste andmete salvestamist meetodite kutsumise kohta, mis hĂ”lmavad mÔÔdikuid nagu tĂ€itmise aeg ja kutsumise kogus.

Allikas: opennet.ru

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