Článek přečtěte do 2 min.

Java 20 je oficiálně zde, od jejího obecného uvedení na trh 21. března 2023. Tato verze představuje desátou verzi funkcí platformy využívající nyní standardní pololetní kadenci. (Java 21 asi uvidíme v září 2023)

Poznámky k vydání Java 20 obsahují obrovské množství informací.

Následuje sedm JEP zahrnutých ve verzi Java 20:

Projekt Amber

JEP 432: Zlepšuje produktivitu vývojářů rozšířením porovnávání vzorů, aby bylo možné vyjadřovat sofistikovanější, sestavitelné datové dotazy. Toho se dosáhne vylepšením programovacího jazyka Java pomocí vzorů záznamů pro dekonstrukci hodnot záznamu. Vzory záznamů a vzory typů lze vnořovat a umožnit tak výkonnou, deklarativní a sestavitelnou formu navigace a zpracování dat.

JEP 433: Zlepšuje produktivitu vývojářů vylepšením sémantiky kódu Java. Toho se dosáhne vylepšením programovacího jazyka Java o porovnávání vzorů pro výrazy a příkazy přepínače. Rozšíření porovnávání vzorů na přepínač umožňuje testovat výraz proti několika vzorům, každý se specifickou akcí, takže lze stručně a bezpečně vyjádřit složité datově orientované dotazy.

Projekt Loom

JEP 429: Umožňuje sdílení neměnných dat v rámci vláken a mezi nimi prostřednictvím hodnot s rozsahem. Hodnoty s rozsahem jsou vhodnější než lokální proměnné podprocesu, zvláště když se používá velký počet virtuálních vláken, a poskytují vylepšení v mnoha oblastech včetně snadnosti použití, srozumitelnosti, robustnosti a výkonu.

JEP 436: Poskytuje odlehčená virtuální vlákna, která dramaticky snižují námahu při psaní, údržbě a sledování vysoce výkonných souběžných aplikací. Virtuální vlákna jsou v Javě oddělena od počtu přirozených fyzických vláken nebo jader v procesoru.

JEP 437: Zjednodušuje více vláknové programování zavedením API pro strukturovanou souběžnost. Toto rozhraní API zachází s více úlohami spuštěnými v různých vláknech jako s jedinou jednotkou práce, čímž zjednodušuje zpracování a rušení chyb, zlepšuje spolehlivost a zlepšuje pozorovatelnost.

Projekt Panama

JEP 434: Zavádí API, pomocí kterého mohou programy Java spolupracovat s kódem a daty mimo běhové prostředí Java. Efektivním vyvoláváním cizích funkcí (tj. kódu mimo JVM) a bezpečným přístupem k cizí paměti (tj. paměti nespravované JVM) umožňuje API programům Java volat nativní knihovny a zpracovávat nativní data bez křehkosti a nebezpečí staršího Java Native Interface (JNI).

Vektor API

JEP 438: Dosahuje vyššího výkonu než ekvivalentní skalární výpočty zavedením API pro vyjádření vektorových výpočtů, které se spolehlivě zkompilují za běhu do optimálních vektorových instrukcí na podporovaných architekturách CPU. Vektorová API byla inkubována v JDK 16, 17, 18 a 19. JDK 20 zahrnuje zpětnou vazbu od uživatelů těchto verzí a také vylepšení výkonu a implementace. Využívá některé funkce JEP 434, které jsou nyní dostatečně vyspělé, aby umožnily tuto závislost.

Opravy a aktualizace

Zatímco většina pozornosti je přirozeně zaměřena na JEP v Javě 20 (a ve všech verzích Javy), existují také tisíce dalších aktualizací výkonu, stability a zabezpečení. Tyto zahrnují

  • Výměna klíčů Datagram Transport Layer Security (DTLS) pojmenovaných skupin
  • Přidání nového GarbageCollectorMXBean pro hlášení výskytu a doby trvání poznámek a pauz při čištění pro G1 garbage collector
  • Vnitřní prvky ChaCha20 na platformách x86_64 a aarch64
  • Podpora Unicode 15.0
  • Vylepšené ovládání souběžných upřesňujících vláken G1
  • Podpora pro Unicode CLDR verze 42
  • Nové události JDK Flight Recorder: jdk.InitialSecurityPropertyajdk.SecurityProviderService
  • Vylepšení stránky Preview API v dokumentaci generované Javadoc
  • Nová jmod –compressmožnost příkazového řádku
  • Podpora Grapheme v BreakIterator
  • Aktualizovaná data časového pásma, která vyhovují standardu 2022c
  • Automaticky generovaná ID v záhlaví Javadoc

Stáhněte si Java 20 a začněte pracovat

Referenční implementace Java SE 20 lze získat na https://jdk.java.net/java-se-ri/20. Pokud hledáte sestavení OpenJDK, jsou na https://jdk.java.net/20/.

Zdroj: Oracle