Java SE 27 ja OpenJDK 27 vÀljalase

PĂ€rast kuue kuu arendust avaldas Oracle Java SE 27 (Java Platform, Standard Edition 27), milleks on viidatud avatud projekt OpenJDK. VĂ€lja arvatud mĂ”ned vananenud funktsioonid, on Java SE 27 tagurpidi ĂŒhilduv varasemate Java versioonidega — enamik varem loodud Java projekte töötab muutmata kujul uue versiooni all. Paigaldamiseks valmis Java SE 27 (JDK, JRE ja Server JRE) koostised on saadaval Linuxile (x86_64, AArch64), Windowsile (x86_64) ja macOS-ile (x86_64, AArch64). OpenJDK projekti raames vĂ€lja töötatud Java SE 27 viidatud rakenduse lĂ€htekood on tĂ€ielikult avatud GPLv2 litsentsiga koos GNU ClassPath eranditega, mis lubavad dĂŒnaamilist sidumist kaubanduslike toodetega.

Java SE 27 kuulub tavapĂ€rase toetuse ajaga versioonide rĂŒhma, millele vĂ€ljastatakse uuendusi kuni jĂ€rgmise versiooni ilmumiseni. Kauakestva toetuse (LTS) harudena tuleks kasutada Java SE 25, Java SE 21 vĂ”i Java SE 17, millele uuendusi vĂ€ljastatakse vastavalt aastatel 2033, 2031 ja 2029 (avalikud — septembri 2030, 2028 ja 2026). Java SE 8 LTS haru pikendatud tugi kestab kuni 2030. aastani ning Java SE 11 kuni 2032. aastani.

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

  • Vaikimisi on kĂ”ikides keskkondades kasutusel jÀÀkide kogumise G1 (Garbage-First) mehanism, mida varem rakendati serverite sĂŒsteemides. G1 on optimeeritud mitme protsessoriga sĂŒsteemide jaoks, millel on suur mĂ€lu ja tasakaalu leidmine viivituste ettearvatavuse ning kĂ”rge lĂ€bilaskevĂ”ime vahel. Tööprotsessi kĂ€igus jagab G1 mĂ€lu paljudeks vĂ€ikesteks piirkondadeks ja puhastab esmajĂ€rjekorras need piirkonnad, kus on rohkem kasutamata objekte ja vĂ€hem aktiivseid andmeid.
  • HotSpot JVM-is on vaikimisi kasutusel kompaktsete objektide pĂ€ised. 64-bitistes sĂŒsteemides on pĂ€iste suurus vĂ€henenud 96 bitti 64 bitini, mis on vĂ€hendanud mĂ€lutarvet ja suurendanud andmete tĂ”enĂ€osust protsessori vahemĂ€lus. SPECjbb2015 testides vĂ€henes mĂ€lutarve 22%, CPU koormus vĂ€henes 8% ja jÀÀkide kogumise operatsioonide arv vĂ€henes 15%. JSON parseri testimisel vĂ€henes testide lĂ€bitavuse aeg 10%.
  • TLS 1.3 implementatsioonis on lisatud toetus hĂŒbriidskeemidele, mis ĂŒhendavad ML-KEM (CRYSTALS-Kyber) algoritmi, mis on kvantkompuutritele vastupidav, klassikaliste elliptiliste kĂ”verate ECDHE algoritmidega: X25519MLKEM768 (ECDHE X25519 kĂ”veratega + ML-KEM-768), SecP256r1MLKEM76 (ECDHE secp256r1 kĂ”veratega + ML-KEM-768) ja SecP384r1MLKEM1024 (ECDHE secp384r1 kĂ”veratega + ML-KEM-1024). API-s javax.net.ssl need skeemid on vaikimisi aktiivsed ega vaja rakenduste muutmist.
  • JDK Flight Recorder (JFR) tööriista, mida kasutatakse jĂ€lgimiseks, profiilimiseks ja jĂ”udlushĂ€irete diagnoosimiseks, on lisatud toetus salvestatud diagnostikainformatsiooni puhastamiseks, sealhulgas kĂ€surea argumentide, keskkonnamuutujate algvÀÀrtuste ja sĂŒsteemi omaduste eemaldamiseks. Muudatus aitab vĂ€ltida konfidentsiaalsete andmete lekkeid, mida analĂŒĂŒsitav protsess töötleb, nagu autoriseerimistokenid ja API juurdepÀÀsuvĂ”tmed, mis kantakse edasi keskkonnamuutujate kaudu.
  • Rakendatud on kolmas eelversioon API Lazy Constants jaoks, et töötada objektidega, mis sisaldavad muutumatuid andmeid ja mida JVM-is kĂ€sitletakse konstandina. Nendele objektidele rakendatakse jĂ”udlusoptimeerimisi, mis on sarnased „final” mĂ€rksĂ”naga vĂ€ljadele. Erinevalt „final”-ist eraldab uus API pĂŒsivÀÀrtuste loomise ja nende initsialiseerimise, tagades, et vÀÀrtust on vĂ”imalik initsialiseerida ainult ĂŒhe korra, lĂŒhendades programmide kĂ€ivitusaega ning vĂ”imaldades kasutajakoodis rakendada konstandi kokkulangemise (constant-folding) optimeerimisi, mida varasemalt kasutati ainult JDK sise[koodis]. class Application { // Oli: // static final UserService USERS = new UserService(); // NĂŒĂŒd on vĂ”imalik: static final StableValue<UserService> USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • MustervĂ”rdlemise mehhanismis on ette pandud viies eelversioon primitiivsete tĂŒĂŒpide (int, byte, char ja muud alustatud tĂŒĂŒbid, mis ei ole objektid) kasutamise vĂ”imaluse jaoks kĂ”igis mallivormides, „instanceof” operaatoris ja „switch” plokkides. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { 
 b 
 }
  • Esitatud on seitsmenda eelversiooni API testi struktureeritud paralleelsuse (Structured Concurrency) jaoks, mis lihtsustab mitme lĂ”ime rakenduste arendamist, kĂ€sitledes mitmeid ĂŒlesandeid, mis tĂ€idetakse erinevates lĂ”imedes, kui ĂŒhtset plokki.
  • Tehtud on kaheteistkĂŒmnenda teste rakenduse API Vector, mis pakub funktsioone vektorkalkulatsioonide jaoks, mida teostatakse x86_64 ja AArch64 protsessorite vektori juhiste abil, vĂ”imaldades samal ajal rakendada toimingud mitmele vÀÀrtusele (SIMD). Erinevalt HotSpot'i JIT-kompilaatoris pakutud automaatvektoriseerimise vĂ”imalustest skalaarkalkulatsioonide jaoks, vĂ”imaldab uus API selgelt juhtida vektoriseerimist andmete paralleelseks töötlemiseks.
  • Saadaval on kolmas eelversioon API jaoks, mis vĂ”imaldab krĂŒptograafiliste vĂ”tmete, sertifikaatide ja tĂŒhistatud sertifikaatide loendite kodeerimist ja dekodeerimist, kasutades PEM (Privacy-Enhanced Mail) formaati.

Lisaks on vÀlja antud JavaFX 27 graafiliste liideste loomise platvormi uuendus. JÀrgmise tunni jooksul oodatakse ka universaalse GraalVM 27 virtuaalmasina vÀljaandmist, mis toetab rakenduste kÀivitamist JavaScriptis (Node.js), Pythonis, Rubys, R-is, mistahes JVM-i (Java, Scala, Clojure, Kotlin) keeles ja keeltes, mille jaoks saab genereerida LLVM-i bitkoodi (C, C++, Rust).

Allikas: opennet.ru

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster