Vydání Java SE 18

Po šesti měsících vývoje vydala společnost Oracle platformu Java SE 18 (Java Platform, Standard Edition 18), která jako referenční implementaci využívá open source 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 projektů Java bude při spuštění v nové verzi stále fungovat bez úprav. Sestavení Java SE 18 (JDK, JRE a Server JRE) připravená k instalaci jsou připravena pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenční implementace Java 18, vyvinutá projektem OpenJDK, je plně open source pod licencí GPLv2 s výjimkami GNU ClassPath, které umožňují dynamické propojení s komerčními produkty.

Java SE 18 je kategorizována jako běžná podpůrná verze, přičemž aktualizace budou vydány před dalším vydáním. Odvětví dlouhodobé podpory (LTS) by měla být Java SE 17, která bude dostávat aktualizace až do roku 2029. Připomeňme, že počínaje vydáním Java 10 přešel projekt na nový vývojový proces, což znamená kratší cyklus tvorby nových verzí. Nové funkce jsou nyní vyvíjeny v jedné neustále aktualizované hlavní větvi, která zahrnuje již dokončené změny a ze které se větve každých šest měsíců rozvětvují za účelem stabilizace nových verzí.

Mezi nové funkce v Javě 18 patří:

  • Výchozí kódování je UTF-8. Java API, která zpracovávají textová data na základě kódování znaků, budou nyní standardně používat UTF-8 na všech platformách, bez ohledu na nastavení systému a nastavení národního prostředí. Chcete-li se vrátit ke starému chování, kdy je kódování zvoleno na základě národního prostředí systému, můžete použít volbu "-Dfile.encoding=COMPAT".
  • Balíček obsahuje balíček com.sun.net.httpserver, který obsahuje obslužný program jwebserver a knihovnu API s implementací jednoduchého http serveru pro obsluhu statického obsahu (CGI a obslužné rutiny podobné servletům nejsou podporovány). Vestavěný HTTP server není optimalizován pro pracovní zátěž a nepodporuje řízení přístupu a autentizaci, protože je primárně zaměřen na použití ve vývojovém procesu pro prototypování, ladění a testování projektů.
  • JavaDoc poskytuje podporu pro značku „@snippet“ pro vložení funkčních příkladů a úryvků kódu do dokumentace API, kde můžete použít nástroje pro ověření, zvýraznění syntaxe a integraci IDE.
  • Přepracována byla implementace java.lang.reflect API (Core Reflection), určeného k získávání informací o metodách, polích a konstruktorech tříd a také přístupu k vnitřní struktuře tříd. Samotné java.lang.reflect API zůstává nezměněno, ale je nyní implementováno pomocí popisovačů metod, které poskytuje modul java.lang.invoke, namísto použití generátorů bytecode. Změna nám umožnila sjednotit implementace java.lang.reflect a java.lang.invoke a zjednodušit jejich údržbu.
  • Byl navržen třetí náhled vektorového API, který poskytuje funkce pro vektorové výpočty, které se provádějí pomocí vektorových instrukcí na procesorech x86_64 a AArch64 a umožňují použití operací současně na více hodnot (SIMD). Na rozdíl od možností, které poskytuje kompilátor HotSpot JIT pro automatickou vektorizaci skalárních operací, nové API umožňuje explicitně řídit vektorizaci pro paralelní zpracování dat.
  • Přidáno rozhraní SPI (rozhraní poskytovatele služeb) pro překlad názvů hostitelů a IP adres, které vám umožňuje používat alternativní resolvery v java.net.InetAddress, které nejsou vázány na handlery nabízené operačním systémem.
  • K dispozici je druhý náhled rozhraní Foreign Function & Memory API, který umožňuje aplikacím komunikovat s kódem a daty mimo běhové prostředí Java. Nové API vám umožňuje efektivně volat funkce, které nejsou JVM, a přistupovat k paměti nespravované JVM. Můžete například volat funkce z externích sdílených knihoven a přistupovat k procesním datům bez použití JNI.
  • Byla přidána druhá experimentální implementace porovnávání vzorů ve výrazech „switch“, což umožňuje použití flexibilních vzorů ve štítcích „case“ namísto přesných hodnot, pokrývajících řadu hodnot najednou, pro které bylo dříve nutné použít těžkopádné řetězce výrazů „kdyby...jinak“. Objekt 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 a jeho přidružené metody, jako je Object.finalize(), Enum.finalize(), Runtime.runFinalization() a System.runFinalization() byly zastaralé a v budoucí verzi budou zakázány.
  • Sběrače odpadků ZGC (Z Garbage Collector), SerialGC a ParallelGC podporují deduplikaci řádků.

Zdroj: opennet.ru

Přidat komentář