Objavljeni Java SE 27 i OpenJDK 27

Nakon šest mjeseci razvoja, Oracle je izdao Java SE 27 (Java Platform, Standard Edition 27), koja koristi open source OpenJDK projekat kao svoju referentnu implementaciju. Izuzev uklanjanja nekih zastarjelih funkcija, Java SE 27 održava unatrag kompatibilnu s prethodnim izdanjima Java platforme - većina prethodno napisanih Java projekata će se pokretati nepromijenjena kada se pokrene pod novom verzijom. Spremne za instalaciju verzije Java SE 27 (JDK, JRE i Server JRE) su pripremljene za... Linux (x86_64, AArch64), Windows (x86_64) i macOS (x86_64, AArch64). Razvijena od strane projekta OpenJDK, referentna implementacija Java SE 27 je u potpunosti otvorenog koda pod GPLv2 licencom sa GNU ClassPath izuzetkom, koji omogućava dinamičko povezivanje sa komercijalnim proizvodima.

Java SE 27 je kategorizirana kao redovno izdanje podrške, s ažuriranjima koja se objavljuju do sljedećeg izdanja. Grana dugoročne podrške (LTS) trebala bi biti Java SE 25, Java SE 21 ili Java SE 17, s ažuriranjima koja se objavljuju do 2033., 2031. i 2029. godine, respektivno (općenito dostupna do septembra 2030., 2028. i 2026.). Proširena podrška za granu Java SE 8 LTS nastavit će se do 2030. godine, a za Java SE 11 do 2032. godine.

Promjene u Java SE 27 (1, 2, 3, 4) uključuju:

  • Podrazumevano, sva okruženja koriste G1 (Garbage-First) sakupljač smeća, koji se ranije koristio za serverske sisteme. G1 je optimizovan za upotrebu na višeprocesorskim sistemima sa velikim memorijskim kapacitetima i za balansiranje predvidljive latencije sa visokim protokom. Tokom rada, G1 dijeli memoriju na mnogo malih regija i daje prioritet onim regijama sa više nekorištenih objekata i manje aktivno pristupanim podacima.
  • HotSpot JVM koristi kompaktne zaglavlja objekata prema zadanim postavkama. Na 64-bitnim sistemima, veličina zaglavlja je smanjena sa 96 na 64 bita, što smanjuje potrošnju memorije i povećava vjerovatnoću da podaci dođu do keš memorije procesora. U SPECjbb2015 testovima, potrošnja memorije je smanjena za 22%, opterećenje CPU-a je smanjeno za 8%, a broj operacija sakupljanja smeća je smanjen za 15%. Vrijeme testiranja JSON parsera je smanjeno za 10%.
  • Implementacija TLS 1.3 dodaje podršku za hibridne sheme slaganja ključeva koje kombiniraju kvantno otporni ML-KEM (CRYSTALS-Kyber) algoritam s klasičnim ECDHE algoritmima eliptične krive: X25519MLKEM768 (ECDHE sa krivuljom X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE sa krivuljom secp256r1 + ML-KEM-768) i SecP384r1MLKEM1024 (ECDHE sa krivuljom secp384r1 + ML-KEM-1024). U javax.net API-ju.ssl Ove sheme su omogućene po zadanim postavkama i ne zahtijevaju nikakve promjene u aplikaciji za korištenje.
  • JDK Flight Recorder (JFR), alat koji se koristi za praćenje performansi, profiliranje i dijagnostiku, sada podržava sanitizaciju argumenata komandne linije, početnih vrijednosti varijabli okruženja i sistemskih svojstava u sačuvanim dijagnostičkim informacijama. Ova promjena sprječava curenje osjetljivih podataka koje obrađuje profilirani proces, kao što su tokeni za autorizaciju i ključevi za pristup API-ju koji se prosljeđuju putem varijabli okruženja.
  • Treća pretpremijera Lazy Constants API-ja je implementirana za rad s objektima koji sadrže nepromjenjive podatke i tretiraju se kao konstante u JVM-u. Na takve objekte primjenjuju se optimizacije performansi slične onima za polja s ključnom riječi "final". Za razliku od "final", novi API odvaja kreiranje konstantnih vrijednosti od njihove inicijalizacije, garantuje da se vrijednost može inicijalizirati samo jednom, smanjuje vrijeme pokretanja programa i omogućava korištenje optimizacija savijanja konstanti, koje su se ranije koristile samo u JDK-internom kodu, u korisničkom kodu. class Application { // Prethodno: // static final UserService USERS = new UserService(); // Sada: static final StableValue KORISNICI = StabilnaVrijednost.of(); javni statički KorisničkiServis korisnici() { vrati KORISNICI.orElseSet(KorisničkiServis::novo); } }
  • Mehanizam za prepoznavanje uzoraka uvodi petu verziju mogućnosti korištenja primitivnih tipova (int, byte, char i drugih neobjektnih osnovnih tipova) u svim vrstama uzoraka, u operatoru instanceof i u blokovima switch. switch (x.getStatus()) { case 0 -> "u redu"; case 1 -> "upozorenje"; case 2 -> "greška"; case int i -> "nepoznat status: " + i; } if (i instanceof byte b) { … b … }
  • Sedmi nacrt Structured Concurrency API-ja, koji pojednostavljuje razvoj višenitnih aplikacija tretiranjem više zadataka koji se izvršavaju na različitim nitima kao jedne cjeline, objavljen je za testiranje.
  • Implementirana je dvanaesta testna implementacija Vector API-ja. Ovaj API pruža funkcije za vektorska izračunavanja izvršena korištenjem vektorskih instrukcija x86_64 i AArch64 procesora i omogućava simultane operacije na više vrijednosti (SIMD). Za razliku od automatske vektorizacije skalarnih operacija HotSpot JIT kompajlera, novi API omogućava eksplicitnu kontrolu nad vektorizacijom za paralelnu obradu podataka.
  • Treća verzija API-ja sada je dostupna za kodiranje i dekodiranje objekata koji sadrže kriptografske ključeve, certifikate i liste opozvanih certifikata korištenjem PEM (Privacy-Enhanced Mail) formata.

Pored toga, sa zadovoljstvom objavljujemo izdanje ažuriranja za platformu JavaFX 27 za kreiranje aplikacija sa grafičkim korisničkim interfejsom. U narednim satima se očekuje i izdanje univerzalne virtuelne mašine GraalVM 27, koja podržava pokretanje aplikacija u JavaScriptu (Node.js), Pythonu, Rubyju, R-u, bilo kojem JVM jeziku (Java, Scala, Clojure, Kotlin) i jezicima za koje se može generisati LLVM bitkod (C, C++, Rust).

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster