Vydanie Java SE 18

Po šiestich mesiacoch vývoja vydal Oracle Java SE 18 (Java Platform, Standard Edition 18), ktorý využíva open-source projekt OpenJDK ako referenčnú implementáciu. S výnimkou odstránenia niektorých zastaraných funkcií si Java SE 18 zachováva spätnú kompatibilitu s predchádzajúcimi vydaniami platformy Java – väčšina predtým napísaných projektov Java bude pri spustení v novej verzii fungovať bez zmien. Zostavy Java SE 18 (JDK, JRE a Server JRE) pripravené na inštaláciu sú pripravené pre Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenčná implementácia Java 18, vyvinutá projektom OpenJDK, je plne open source pod licenciou GPLv2, s výnimkami GNU ClassPath, ktoré umožňujú dynamické prepojenie s komerčnými produktmi.

Java SE 18 je klasifikovaná ako bežné vydanie podpory a bude naďalej dostávať aktualizácie až do ďalšieho vydania. Pobočka Long Term Support (LTS) by mala byť Java SE 17, ktorá bude naďalej dostávať aktualizácie až do roku 2029. Pripomeňme, že počnúc vydaním Java 10 projekt prešiel na nový vývojový proces, čo znamená kratší cyklus tvorby nových vydaní. Nová funkcionalita sa teraz vyvíja v jednej neustále aktualizovanej hlavnej vetve, ktorá zahŕňa hotové zmeny a z ktorej sa vetvy rozvetvujú každých šesť mesiacov, aby sa stabilizovali nové vydania.

Nové funkcie v Java 18 zahŕňajú:

  • Predvolené kódovanie je UTF-8. Rozhrania Java API, ktoré spracúvajú textové údaje na základe kódovania znakov, budú teraz štandardne používať UTF-8 na všetkých platformách bez ohľadu na systémové nastavenia a nastavenia miestneho nastavenia. Ak sa chcete vrátiť k starému správaniu, kde sa kódovanie vyberá na základe miestneho nastavenia systému, môžete použiť možnosť „-Dfile.encoding=COMPAT“.
  • Balík obsahuje balík com.sun.net.httpserver, ktorý obsahuje obslužný program jwebserver a knižnicu API s implementáciou jednoduchého http servera na obsluhu statického obsahu (CGI a obslužné programy podobné servletom nie sú podporované). Zabudovaný HTTP server nie je optimalizovaný pre pracovné zaťaženie a nepodporuje riadenie prístupu a autentifikáciu, pretože je primárne zameraný na použitie v procese vývoja pre prototypovanie, ladenie a testovanie projektov.
  • JavaDoc poskytuje podporu pre značku „@snippet“ na vloženie funkčných príkladov a útržkov kódu do dokumentácie API, kde môžete použiť nástroje na overenie, zvýrazňovanie syntaxe a integráciu IDE.
  • Prepracovaná je implementácia java.lang.reflect API (Core Reflection), určeného na získavanie informácií o metódach, poliach a konštruktoroch tried, ako aj prístup k vnútornej štruktúre tried. Samotné API java.lang.reflect zostáva nezmenené, ale teraz je implementované pomocou popisovačov metód, ktoré poskytuje modul java.lang.invoke, namiesto použitia generátorov bajtového kódu. Zmena nám umožnila zjednotiť implementácie java.lang.reflect a java.lang.invoke a zjednodušiť ich údržbu.
  • Bola navrhnutá tretia ukážka rozhrania Vector API, ktorá poskytuje funkcie pre vektorové výpočty, ktoré sa vykonávajú pomocou vektorových inštrukcií na procesoroch x86_64 a AArch64 a umožňujú súčasné aplikovanie operácií na viaceré hodnoty (SIMD). Na rozdiel od možností, ktoré poskytuje kompilátor HotSpot JIT pre automatickú vektorizáciu skalárnych operácií, nové API umožňuje explicitne riadiť vektorizáciu pre paralelné spracovanie údajov.
  • Pridané rozhranie SPI (rozhranie poskytovateľa služieb) na rozlíšenie názvov hostiteľov a IP adries, ktoré vám umožňuje používať alternatívne prekladače v java.net.InetAddress, ktoré nie sú viazané na obslužné programy ponúkané operačným systémom.
  • K dispozícii je druhá ukážka rozhrania Foreign Function & Memory API, ktorá umožňuje aplikáciám interagovať s kódom a údajmi mimo runtime Java. Nové API vám umožňuje efektívne volať funkcie, ktoré nie sú JVM, a pristupovať k pamäti, ktorá nie je spravovaná JVM. Môžete napríklad volať funkcie z externých zdieľaných knižníc a pristupovať k procesným dátam bez použitia JNI.
  • Bola pridaná druhá experimentálna implementácia zhody vzorov vo výrazoch „prepínač“, ktorá umožňuje použitie flexibilných vzorov v štítkoch „prípadov“ namiesto presných hodnôt, pokrývajúcich sériu hodnôt naraz, pre ktoré bolo predtým potrebné použiť ťažkopádne reťazce výrazov „keby...inak“. 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(); };
  • Finalizačný mechanizmus a s ním spojené metódy, ako napríklad Object.finalize(), Enum.finalize(), Runtime.runFinalization() a System.runFinalization() boli zastarané a v budúcom vydaní budú zakázané.
  • Kolektor odpadu ZGC (Z Garbage Collector), SerialGC a ParallelGC podporuje deduplikáciu riadkov.

Zdroj: opennet.ru

Pridať komentár