Java SE 26 ja OpenJDK 26 vÀljaanne. Projekt JavaScripti ja Python'i toe integreerimise kohta JVM-s

PĂ€rast kuue kuu arendustööd avaldas Oracle Java SE 26 (Java Platform, Standard Edition 26), mille etaloniks on avatud projekt OpenJDK. VĂ€lja arvatud mĂ”ned vananenud funktsioonide eemaldamine, sĂ€ilitab Java SE 26 tagasipöörduvuse varasemate Java platvormi versioonidega — enamik varasemalt kirjutatud Java projekte töötab uue versiooniga ilma muutusteta. Java SE 26 installimiseks valmis 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Ă€ljatöötatud Java SE 26 etalonrakendus on tĂ€ielikult avatud GPLv2 litsentsi alusel, kaasates GNU ClassPath, mis lubab dĂŒnaamilist sidumist kommertsproduktidega.

Java SE 26 kuulub tavalise toe kestusega vĂ€ljaannete kategooriasse, mille uuendused ilmuvad kuni jĂ€rgmise versioonini. Pikaajalise toe (LTS) haruna tuleks kasutada Java SE 25, Java SE 21 vĂ”i Java SE 17, mille uuendusi antakse vĂ€lja vastavalt kuni 2033, 2031 ja 2029. aastani (avalikud — kuni septembri 2030, 2028 ja 2026). LTS-haru Java SE 8 pikendatud tugi kestab kuni 2030. aastani, Java SE 11 aga kuni 2032. aastani.

Java SE 26 muudatuste seas (1, 2, 3, 4):

  • Rakendatud on hoiatusi, kui kasutatakse sĂŒgavat refleksiooni muude 'final' mĂ€rgisega vĂ€ljade muutmiseks. Tulevikus on plaanis vaikimisi keelata keele ebaturvalised funktsioonid ja muu hulgas muuta 'final' nagu vĂ€ljad tĂ€iesti muutumatuks, eemaldades vĂ”imaluse nende muutmiseks sĂŒgava refleksiooni (API Reflection) kaudu.
  • Eemaldatud on Applet API (java.applet.Applet*, javax.swing.JApplet), mida kasutati Java rakenduste kĂ€ivitamiseks brauseris. See API kaotas asjakohasuse pĂ€rast Java pluginade toe lĂ”petamist brauserites ja kuulutati 2021. aastal vananenuks.
  • On valmis kasutamiseks eeltöödeldud vahemĂ€lu (AOT — ahead-of-time) koos kĂ”ikide prĂŒgikogujatega, sealhulgas ZGC (Z Garbage Collector). Muudatus hĂ”lmab toetust jĂ€rkjĂ€rgulise laadimise jaoks mĂ€lus vahemĂ€llu salvestatud Java objektide jaoks, kasutades universaalset ja prĂŒgikogujatest sĂ”ltumatut formaati, selle asemel et kasutada otse mĂ€llu kaardistamist vahemĂ€lu spetsiifilistele vaadetele. AOT vahemĂ€lu kasutamine vĂ€hendab kĂ€ivitusaega ja kiirendab virtuaalse masina HotSpot soojendamist.
  • HTTP Client API-sse on lisatud HTTP/3 protokolli tugi, mis vĂ”imaldab rakendustel ja teegidel pöörduda serverite poole HTTP/3 kaudu pĂ€rast minimaalseid koodimuudatusi.
  • G1 prĂŒgikoguja jĂ”udlust on parendatud, vĂ€hendades blokeeringute arvu rakenduse lĂ”ime ja prĂŒgikoguja lĂ”ime sĂŒnkroniseerimiseks.
  • Pakutud on teine eelkoodide variant API-le, mis tegeleb krĂŒpto vĂ”tmete, sertifikaatide ja tĂŒhistamiste nimekirjade kodeerimise ja dekodeerimisega, kasutades PEM (Pivacy-Enhanced Mail) formaati.
  • Kuues eelkoodide variant API-le, mis kĂ€sitleb struktureeritud paralleelsust (Structured Concurrency), on testeeringuks. See lihtsustab mitme lĂ”imega rakenduste arendamist, sÀÀstes mitme ĂŒlesande töötlemise ajal, mis tĂ€idetakse erinevates lĂ”imedes, kui ĂŒhtset plokki.
  • Teine eelkoodide variant Lazy Constants API-le on lisatud, et töötada objektidega, mis sisaldavad muutumatuid andmeid ja mida JVM-is töödeldakse kui konstandte. Nendele objektidele kehtivad jĂ”udluse optimeerimised, mis on sarnased 'final' mĂ€rksĂ”naga vĂ€ljadel. Erinevalt 'final'-ist eraldab uus API konstantsete vÀÀrtuste loomise ja nende initsialiseerimise, tagades, et vÀÀrtust saab initsialiseerida ainult kord, vĂ€hendades programmide kĂ€ivitusaega ja lubades kasutajakoodis rakendada konstantide kokkuvĂ”tmise (constant-folding) optimeerimisi, mida varem rakendati ainult JDK-siseses koodis. class Application { // Oli: // static final UserService USERS = new UserService(); // NĂŒĂŒd vĂ”ib: static final StableValue<UserService> USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • KohtuvĂ”rdlemise mehhanismis on pakutud neljandat eelvariant vĂ”imalusest kasutada primitiivseid tĂŒĂŒpe (int, byte, char ja teised baastĂŒĂŒbid, mis ei ole objektid) kĂ”igis mallides, operatoris „instanceof“ 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 
 }
  • Pakutud on ĂŒheteistkĂŒmnes testimise rakendusliides Vector, mis pakub funktsioone vektorkalkulatsioonideks, mis teostatakse x86_64 ja AArch64 protsessorite vektorinstruktsioonide abil ning vĂ”imaldavad kohe rakendada toiminguid mitmele vÀÀrtusele (SIMD). Erinevalt JIT-kompilaator HotSpot pakutud automaatvektoriseerimise vĂ”imalustest skalaarkalkulatsioonide jaoks, vĂ”imaldab uus API selgelt hallata vektorisatsiooni andmete paralleelseks töötlemiseks.

Lisaks on Oracle kuulutanud vĂ€lja projekti Detroit, mis areneb osana OpenJDK-st ja on suunatud Java, JavaScripti ja Pythoni vahelise ĂŒhilduvuse parandamisele. Projekti raames plaanitakse pakkuda vĂ”imalust integreerida JVM runtime protsessi JavaScripti V8 mootori ja CPythoni tĂ”lgiga. Varasemalt oli Oracle arendanud JavaScripti mootori Nashorn, mis töötas JVM-i virtuaalmasina kohal, kuid projekt peatati, kuna JavaScripti eraldi teostamise arendamine oli probleemne, kui pĂ”hiekosĂŒsteem tugines V8 mootorile.

Lisaks vÔime mÀrkida JavaFX 26 graafilise kasutajaliidese rakenduste arendamise platvormi vÀrskenduse avaldamist. JÀrgmise paari tunni jooksul oodatakse ka universaalset GraalVM 26 virtuaalmasinat, mis toetab rakenduste kÀitamist JavaScriptis (Node.js), Pythoni, Ruby, R, kÔigis JVM-i (Java, Scala, Clojure, Kotlin) keeltes ning keeltes, mille jaoks saab genereerida LLVM bitkoodi (C, C++, Rust).

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster