Izdanak Java SE 27 i OpenJDK 27

Nakon šest mjeseci razvoja, tvrtka Oracle je objavila platformu Java SE 27 (Java Platform, Standard Edition 27), koja se koristi kao referentna implementacija otvorenog projekta OpenJDK. Osim uklanjanja nekih zastarjelih značajki, Java SE 27 zadržava unatrag kompatibilnost s prethodnim izdanjima platforme Java — većina ranije napisanih Java projekata će raditi bez promjena na novoj verziji. Pripremljene su verzije za instalaciju Java SE 27 (JDK, JRE i Server JRE) za Linux (x86_64, AArch64), Windows (x86_64) i macOS (x86_64, AArch64). Referentna implementacija Java SE 27 razvijena u okviru projekta OpenJDK potpuno je otvorena pod GPLv2 licencom s iznimkama GNU ClassPath koje omogućuju dinamičko povezivanje s komercijalnim proizvodima.

Java SE 27 je klasificirana kao izdanje s redovnom podrškom, a ažuriranja će se izdavati do sljedećeg izdanja. Za dugoročni suport (LTS) preporučuje se koristiti Java SE 25, Java SE 21 ili Java SE 17, čija će ažuriranja biti dostupna do 2033., 2031. i 2029. godine, redom (javna ažuriranja – do rujna 2030., 2028. i 2026. godine). Prolongirana podrška za LTS granu Java SE 8 trajat će do 2030. godine, a Java SE 11 do 2032. godine.

Među promjenama u Java SE 27 (1, 2, 3, 4):

  • Na svim okruženjima zadani je sakupljač smeća G1 (Garbage-First), koji se ranije koristio za poslužiteljske sustave. G1 je optimiziran za korištenje na višekprocesorskim sustavima s velikim kapacitetom memorije, balansirajući između predvidivosti kašnjenja i visoke propusnosti. Tijekom rada G1 dijeli memoriju na mnoštvo malih regija i prvo čisti one regije s više neiskorištenih objekata i manje aktivnih podataka.
  • U HotSpot JVM zadani su kompaktni zaglavlja objekata. Veličina zaglavlja na 64-bitnim sustavima smanjena je s 96 na 64 bita, što je smanjilo potrošnju memorije i povećalo vjerojatnost da će podaci ući u procesorski memorijski predmemoriju. U SPECjbb2015 testovima, potrošnja memorije smanjena je za 22%, opterećenje CPU-a smanjeno je za 8%, a broj operacija sakupljanja smeća smanjen je za 15%. Tijekom testiranja JSON parsera, vrijeme potrebno za izvršenje testova smanjeno je za 10%.
  • Implementacija TLS 1.3 uvela je podršku za hibridne sheme dogovora ključeva koje kombiniraju ML-KEM algoritam (CRYSTALS-Kyber) otporan na kvantno računanje s klasičnim algoritmima zasnovanim na eliptičnim krivuljama ECDHE: X25519MLKEM768 (ECDHE s krivuljom X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE s krivuljom secp256r1 + ML-KEM-768) i SecP384r1MLKEM1024 (ECDHE s krivuljom secp384r1 + ML-KEM-1024). U API javax.net.Uklonjena je neiskorištena tabela INFORMATION_SCHEMA.TABLESPACES. Ove sheme su uključene po defaultu i ne zahtijevaju promjene aplikacija za primjenu.
  • Alat JDK Flight Recorder (JFR), koji se koristi za praćenje, profiliranje i dijagnostiku performansi, sada podržava čišćenje sačuvane dijagnostičke informacije kao što su argumenti naredbenog retka, početne vrijednosti varijabli okruženja i sistemske postavke. Ova promjena sprečava curenje povjerljivih podataka koje obrađuje profilirani proces, kao što su tokeni autorizacije i ključevi za pristup API-ju koji su proslijeđeni putem varijabli okruženja.
  • Uvedena je treća preliminarna verzija API-ja Lazy Constants za rad s objektima koji sadrže nepromjenjive podatke i obrađuju se u JVM-u kao konstante. Ovim objektima primjenjuju se optimizacije performansi slične poljima s ključnom riječi „final“. Za razliku od „final“, novi API oddvaja kreiranje trajnih vrijednosti od njihove inicijalizacije, osigurava da se vrijednost može inicijalizirati samo jednom, skraćuje vrijeme pokretanja programa i omogućava primjenu optimizacija skraćivanja konstanti (constant-folding) u korisničkom kodu, koje su ranije bile dostupne samo u unutrašnjem kodu JDK. class Application { // Bilo je: // static final UserService USERS = new UserService(); // Sada može: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); }}
  • U mehanizmu usklađivanja uzoraka predložen je peti preliminarni mogući način korištenja primitivnih tipova (int, byte, char i drugi osnovni tipovi koji nisu objekti) u svim vrstama obrazaca, u „instanceof“ operatoru i u „switch“ blokovima. switch (x.getStatus()) { case 0 -> „okey“; case 1 -> „warn“; case 2 -> „greška“; case int i -> „nepoznati status: „ + i; } if (i instanceof byte b) { … b … }
  • Predložen za testiranje sedmi preliminarni oblik API-ja za strukturirano paralelno programiranje (Structured Concurrency), koji pojednostavljuje razvoj višedretvenih aplikacija obradi nekoliko zadataka koji se izvršavaju u različitim nitima kao jedinstveni blok.
  • Implementirana dvanaesta testna realizacija API-ja Vector, koja pruža funkcije za vektorske izračune, koje se izvršavaju koristeći vektorske instrukcije procesora x86_64 i AArch64 te omogućuju izvođenje operacija odjednom na više vrijednosti (SIMD). Za razliku od mogućnosti automatske vektorizacije skalarnih operacija koje pruža JIT-kompajler HotSpot, novi API omogućuje izravno upravljanje vektorizacijom za paralelnu obradu podataka.
  • Dostupan je treći preliminarni oblik API-ja za kodiranje i dekodiranje objekata s kriptografskim ključevima, certifikatima i listama povučenih certifikata, koristeći format PEM (Pivacy-Enhanced Mail).

Dodatno, vrijedi napomenuti objavu ažuriranja platforme za izradu aplikacija s grafičkim sučeljem JavaFX 27. Uslijed nekoliko sati također se očekuje objava univerzalne virtualne mašine GraalVM 27, koja podržava pokretanje aplikacija na JavaScriptu (Node.js), Pythonu, Rubyju, R-u, svim jezicima za JVM (Java, Scala, Clojure, Kotlin) i jezicima za koje se može generirati LLVM bitkod (C, C++, Rust).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster