Objavljeni su Java SE 27 i OpenJDK 27

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

Java SE 27 kategorizirana je 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. (općenito dostupna do rujna 2030., 2028. i 2026.). Proširena podrška za granu Java SE 8 LTS nastavit će se do 2030., a za Java SE 11 do 2032.

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

  • Prema zadanim postavkama, sva okruženja koriste sakupljač smeća G1 (Garbage-First), koji se prethodno koristio za poslužiteljske sustave. G1 je optimiziran za korištenje na višeprocesorskim sustavima s velikim memorijskim kapacitetima i za uravnoteženje predvidljive latencije s visokim protokom. Tijekom rada, G1 dijeli memoriju na mnogo malih područja i daje prioritet onim područjima s više nekorištenih objekata i manje aktivno pristupanim podacima.
  • HotSpot JVM prema zadanim postavkama koristi kompaktne zaglavlja objekata. Na 64-bitnim sustavima veličina zaglavlja smanjena je s 96 na 64 bita, čime se smanjuje potrošnja memorije i povećava vjerojatnost da podaci dospiju u predmemoriju procesora. 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%. Vrijeme testiranja JSON parsera smanjeno je 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 krivulje: 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 javax.net API-ju.ssl Ove su sheme omogućene prema zadanim postavkama i ne zahtijevaju nikakve promjene aplikacije za korištenje.
  • JDK Flight Recorder (JFR), alat koji se koristi za praćenje performansi, profiliranje i dijagnostiku, sada podržava sanitizaciju argumenata naredbenog retka, početnih vrijednosti varijabli okruženja i svojstava sustava u spremljenim 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 implementirana je 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 stvaranje konstantnih vrijednosti od njihove inicijalizacije, jamči da se vrijednost može inicijalizirati samo jednom, smanjuje vrijeme pokretanja programa i omogućuje korištenje optimizacija savijanja konstanti, koje su se prije koristile samo u JDK-internom kodu, u korisničkom kodu. class Application { // Prije: // 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 neobjektivnih 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 izvedena pomoću vektorskih instrukcija x86_64 i AArch64 procesora te omogućuje simultane operacije na više vrijednosti (SIMD). Za razliku od automatske vektorizacije skalarnih operacija HotSpot JIT kompajlera, novi API omogućuje 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 popise opozvanih certifikata pomoću PEM (Privacy-Enhanced Mail) formata.

Osim toga, s ponosom objavljujemo izdanje ažuriranja platforme JavaFX 27 za izradu aplikacija s grafičkim korisničkim sučeljem. U nadolazećim satima očekuje se i izdanje univerzalnog virtualnog stroja GraalVM 27, koji 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 generirati LLVM bitcode (C, C++, Rust).

Izvor: opennet.ru

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