Vydání Java SE 27 a OpenJDK 27

Po šesti měsících vývoje společnost Oracle zveřejnila platformu Java SE 27 (Java Platform, Standard Edition 27), jejíž referenční implementací je otevřený projekt OpenJDK. S výjimkou odstranění několika zastaralých funkcí v Java SE 27 byla zachována zpětná kompatibilita s předchozími verzemi platformy Java - většina dříve napsaných Java projektů bude běžet bez změn na nové verzi. Sestavení Java SE 27 (JDK, JRE a Server JRE) připravené k instalaci jsou k dispozici pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenční implementace Java SE 27, vyvinutá v rámci projektu OpenJDK, je plně otevřena pod licencí GPLv2 s výjimkami GNU ClassPath, které povolují dynamické propojení s komerčními produkty.

Java SE 27 je zařazena do kategorie verzí s běžnou dobou podpory, aktualizace pro ni budou vydávány až do další verze. Jako verzi s dlouhou dobou podpory (LTS) by měly být použity Java SE 25, Java SE 21 nebo Java SE 17, pro které budou aktualizace vydávány do let 2033, 2031 a 2029 (veřejné - do září 2030, 2028 a 2026). Rozšířená podpora LTS větve Java SE 8 potrvá do roku 2030, a Java SE 11 - do roku 2032.

Mezi změnami v Java SE 27 (1, 2, 3, 4):

  • Jako výchozí pro všechna prostředí je nasazen sběrač odpadu G1 (Garbage-First), který byl dříve používán na serverových systémech. G1 je optimalizován pro používání na vícejádrových systémech s velkým objemem paměti a vyvažování mezi předvídatelností latencí a vysokou propustností. Během provozu G1 dělí paměť na mnoho malých regionů a nejdříve čistí ty, kde je nejvíce nevyužitých objektů a méně aktivně používaných dat.
  • V HotSpot JVM jsou jako výchozí použity kompaktní záhlaví objektů. Velikost záhlaví na 64bitových systémech byla zmenšena z 96 na 64 bitů, což snížilo spotřebu paměti a zvýšilo pravděpodobnost, že se data dostanou do procesorové cache. V testech SPECjbb2015 se spotřeba paměti snížila o 22 %, zátěž na CPU klesla o 8 % a počet operací sběru odpadu se snížil o 15 %. Při testování JSON parseru se doba procházení testy zkrátila o 10 %.
  • Do implementace TLS 1.3 byla přidána podpora hybridních schémat pro dohodu o klíčích, kombinující algoritmus ML-KEM (CRYSTALS-Kyber), odolný proti útokům kvantových počítačů, s klasickými algoritmy na bázi eliptických křivek ECDHE: X25519MLKEM768 (ECDHE s křivkou X25519 + ML-KEM-768), SecP256r1MLKEM76 (ECDHE s křivkou secp256r1 + ML-KEM-768) a SecP384r1MLKEM1024 (ECDHE s křivkou secp384r1 + ML-KEM-1024). V API javax.net.ssl Tato schémata jsou zahrnuta ve výchozím nastavení a nevyžadují žádné úpravy aplikací.
  • Do nástroje JDK Flight Recorder (JFR), využívaného pro monitorování, profilování a diagnostiku výkonu, byla přidána podpora pro čištění uložených diagnostických informací argumentů příkazové řádky, počátečních hodnot proměnných prostředí a systémových vlastností. Tato změna pomáhá zabránit úniku citlivých údajů, které profilovaný proces zpracovává, jako jsou tokeny autorizace a klíče pro API předávané prostřednictvím proměnných prostředí.
  • Byla realizována třetí předběžná verze API Lazy Constants pro práci s objekty obsahujícími neměnné hodnoty, které jsou v JVM zpracovávány jako konstanty. Na tyto objekty se vztahují optimalizace výkonu podobné jako u polí s klíčovým slovem „final“. Na rozdíl od „final“ nové API odděluje vytváření trvalých hodnot od jejich inicializace, zaručuje, že hodnota může být inicializována pouze jednou, zkracuje čas spuštění programů a umožňuje aplikaci optimalizací pro skládání konstant (constant-folding) v uživatelském kódu, které byly dříve používány pouze ve vnitřním kódu JDK.
    class Application {
    // Bylo:
    // static final UserService USERS = new UserService();
    // Nyní lze:
    static final StableValue<UserService> USERS = StableValue.of();
    public static UserService users() {
    return USERS.orElseSet(UserService::new);
    }
    }
  • V mechanismu shody vzorů byl navržen pátý předběžný variant možnosti použití primitivních typů (int, byte, char a další základní typy, které nejsou objekty) ve všech typech šablon, v příkazu „instanceof“ a v blocích „switch“.
    switch (x.getStatus()) {
    case 0 -> „okay“;
    case 1 -> „warning“;
    case 2 -> „error“;
    case int i -> „unknown status: “ + i;
    }
    if (i instanceof byte b) {
    … b …
    }
  • Byl navržen k testování sedmý předběžný variant API pro strukturovaný paralelismus (Structured Concurrency), který usnadňuje vývoj vícethreadových aplikací tím, že zpracovává několik úloh prováděných v různých vláknech jako jeden blok.
  • Byla implementována dvanáctá testovací realizace API Vector, která poskytuje funkce pro vektorová výpočty prováděné pomocí vektorových instrukcí procesorů x86_64 a AArch64 a umožňuje provádět operace najednou na více hodnotách (SIMD). Na rozdíl od možností auto-vykreslování skalarních operací nabízených v JIT kompilátoru HotSpot, nové API umožňuje explicitní kontrolu vektorování pro paralelní zpracování dat.
  • Dostupná je třetí předběžná varianta API pro kódování a dekódování objektů s kryptografickými klíči, certifikáty a seznamy odvolaných certifikátů, používající formát PEM (Privacy-Enhanced Mail).

Dále lze zmínit publikaci aktualizace platformy pro vytváření aplikací s grafickým rozhraním JavaFX 27. V následujících hodinách se také očekává vydání univerzální virtuální stroje GraalVM 27, který podporuje spouštění aplikací v JavaScriptu (Node.js), Pythonu, Rubyu, R, jakýchkoli jazycích pro JVM (Java, Scala, Clojure, Kotlin) a v jazycích, pro které lze generovat bitcode LLVM (C, C++, Rust).

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster