Vydání Java SE 18

Po šesti měsících vývoje společnost Oracle vydala platformu Java SE 18 (Java Platform, Standard Edition 18), jejíž referenční implementací je otevřený projekt OpenJDK. S výjimkou odstranění některých zastaralých funkcí si Java SE 18 zachovává zpětnou kompatibilitu s předchozími verzemi platformy Java — většina dříve napsaných Java projektů bude fungovat bez změn na nové verzi. K dispozici jsou instalační balíčky Java SE 18 (JDK, JRE a Server JRE) pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenční implementace Java 18 vyvinutá v rámci projektu OpenJDK je plně otevřená pod licencí GPLv2 s výjimkami GNU ClassPath, které umožňují dynamické propojení s komerčními produkty.

Java SE 18 patří do kategorie vydání s běžnou dobou podpory, aktualizace pro něj budou vydávány do příštího vydání. Pro dlouhodobou podporu (LTS) by měla být použita Java SE 17, pro kterou budou aktualizace vydávány až do roku 2029. Připomínáme, že od vydání Java 10 přešel projekt na nový proces vývoje, který zahrnuje kratší cyklus vytváření nových verzí. Nové funkce se nyní vyvíjejí v jedné průběžně aktualizované větvi master, do které se zahrnují již hotové změny a od které se každých šest měsíců odpojují větve pro stabilizaci nových vydání.

Mezi novinkami Java 18 lze zmínit:

  • Ve výchozím nastavení je aktivována kódování UTF-8. Java API, které zpracovávají textová data s ohledem na kódování znaků, nyní na všech platformách ve výchozím nastavení používají UTF-8, bez ohledu na systémová nastavení a nastavenou lokalitu. Pro návrat k starému chování, ve kterém je kódování vybráno podle systémové lokality, lze použít parametr „-Dfile.encoding=COMPAT“.
  • Součástí je balíček com.sun.net.httpserver, který zahrnuje nástroj jwebserver a knihovní API s implementací jednoduchého http serveru pro poskytování statického obsahu (CGI a servletové podobné zpracovatele nepodporuje). Vestavěný http server není optimalizován pro pracovní zátěže a nepodporuje řízení přístupu a autentizaci, neboť je hlavně zaměřen na použití v procesu vývoje pro vytváření prototypů, ladění a testování projektů.
  • JavaDoc implementuje podporu pro tag "@snippet" pro začleňování pracovních příkladů a úryvků kódu do dokumentace API, kde lze použít nástroje pro ověřování správnosti, zvýraznění syntaxe a integraci s IDE.
  • Byla přepracována implementace API java.lang.reflect (Core Reflection), určená k získávání informací o metodách, polích a konstruktorech tříd, stejně jako přístup k vnitřní struktuře tříd. Samotné API java.lang.reflect zůstalo beze změny, ale nyní je realizováno pomocí deskriptorů metod (method handles), které poskytuje modul java.lang.invoke, namísto použití generátorů bajtkódu. Tento změna umožnila zjednodušit implementace java.lang.reflect a java.lang.invoke a usnadnit jejich údržbu.
  • Byla navržena třetí předběžná implementace API Vector, které poskytuje funkce pro vektorové výpočty, jež se provádějí pomocí vektorových instrukcí procesorů x86_64 a AArch64 a umožňují současně aplikovat operace na více hodnot (SIMD). Na rozdíl od auto-vektorizace skalárních operací, kterou nabízí JIT kompilátor HotSpot, nový API umožňuje explicitně řídit vektorizaci pro paralelní zpracování dat.
  • Byl přidán SPI rozhraní (service-provider interface) pro rozpoznávání názvů hostitelů a IP adress, které umožňuje v java.net.InetAddress využívat alternativní resolvery, nezávislé na zpracovatelích nabízených operačním systémem.
  • Byla navržena druhá předběžná implementace API Foreign Function & Memory, která umožňuje aplikacím interagovat s kódem a daty nacházejícími se mimo Java runtime. Nové API umožňuje efektivní volání funkcí, které nejsou vykonávány v JVM, a přístup k paměti, kterou JVM neřídí. Například je možné volat funkce z externích sdílených knihoven a získávat data procesu bez použití JNI.
  • Byla přidána druhá experimentální implementace shody vzorů ve výrazech «switch», která umožňuje používat v označeních «case» nejen přesné hodnoty, ale i flexibilní vzory, které pokrývají celou řadu hodnot, pro které bylo dříve nutné používat objemné řetězce výrazů «if…else». Object o = 123L; String formatted = switch (o) { case Integer i -> String.format(«int %d», i); case Long l -> String.format(«long %d», l); case Double d -> String.format(«double %f», d); case String s -> String.format(«String %s», s); default -> o.toString(); };
  • Mechanismus finalizace byl označen jako zastaralý a bude odstraněn v některé z následujících verzí, včetně souvisejících metod, jako jsou Object.finalize(), Enum.finalize(), Runtime.runFinalization() a System.runFinalization().
  • V garbage collectorech ZGC (Z Garbage Collector), SerialGC a ParallelGC byla implementována podpora deduplikace řetězců.

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