JEP v Javě 21 dodávají platformě několik důležitých pokroků připravených na produkci.
Java 21 je oficiálně zde, od jejího obecného uvedení na trh 19. září 2023. Tato verze představuje 12. verzi funkcí platformy využívající nyní standardní pololetní kadenci. (Java 22 bude představena v březnu 2024)
Poznámky k vydání Java 21 obsahují obrovské množství informací a tento článek zasáhne některé z nejdůležitějších. Můžete si také prohlédnout „Java 21 sneak peek“ od Mohameda Tamana a „Going inside the Java 21’s bohaté, připravované dobroty Nicolaie Parloga“.
Jak je popsáno v oficiálním blogu o vydání, Java 21 přináší desítky nových funkcí a vylepšení. Patnáct z nich se objevilo jako JEP, které zahrnovaly osm produkčních funkcí připravených k použití. Ostatní jsou funkce náhledu a inkubátoru, které jsou určeny vám a vaší organizaci k prozkoumání, ale které ještě nejsou připraveny pro produkční použití, protože tyto funkce se mohou v budoucích verzích Java změnit.
Velká část nových funkcí v Javě 21 se vztahuje na čtyři hlavní iniciativy platforem: Project Amber (zlepšení produktivity vývojářů), Project Loom (reimaginace vláken), Project Panama (přemostění Javy a dalších platforem) a Project Valhalla (rozšíření objektového modelu Java pomocí hodnotové předměty).
Další JEP vylepšují základní knihovny Java a sběrače odpadků, zatímco několik připravuje zastaralé funkce Java pro odstranění v budoucích verzích platformy.
JEP připravené k výrobě
Následují JEP připravené k výrobě zahrnuté ve verzi Java 21:
- JEP 431: Sekvenční kolekce. Tento JEP zavádí nová rozhraní pro reprezentaci kolekcí s definovaným pořadím setkání. Každá taková kolekce má dobře definovaný první prvek, druhý prvek a tak dále, až po poslední prvek. Poskytuje také jednotná rozhraní API pro přístup k prvním a posledním prvkům kolekce a pro zpracování jejích prvků v opačném pořadí.
- JEP 439: Generační ZGC. Tento JEP zlepšuje výkon aplikací rozšířením Z Garbage Collector (ZGC) pro zachování oddělených generací pro mladé a staré objekty. Aplikace běžící s Generational ZGC by se měly těšit z nižšího rizika zablokování alokace, nižší režie požadované haldy paměti a nižší režie CPU pro sběr odpadu.
- JEP 440: Záznam vzorů. Tento JEP vylepšuje programovací jazyk Java rozšířením porovnávání vzorů na instance tříd záznamů, což umožňuje sofistikovanější datové dotazy. Přidává také vnořené vzory, které vám mohou pomoci vytvářet více složitelné datové dotazy.
- JEP 441: Přizpůsobení vzoru pro přepínač. Tento JEP zlepšuje produktivitu programovacího jazyka Java tím, že je sémantický, takže složité datově orientované dotazy mohou být vyjádřeny stručně a bezpečně. Činí tak tím, že umožňuje, aby se vzory objevily v popiscích případů, a zároveň vyžaduje, aby příkazy přepínače vzorů pokrývaly všechny možné vstupní hodnoty.
- JEP 444: Virtuální vlákna. Virtuální vlákna mohou výrazně snížit námahu při psaní, údržbě a sledování vysoce výkonných souběžných aplikací. Tento JEP umožňuje serverovým aplikacím napsaným ve stylu jednoduchého vlákna na požadavek škálovat s téměř optimálním využitím hardwaru a také umožňuje existujícímu kódu, který používá rozhraní API,
java.lang.Thread
přijímat virtuální vlákna s minimálními změnami. - JEP 449: Zastarat 32bitový x86 port Windows pro odstranění. 32bitová verze systému Windows na procesorech x86 je zastaralá. Je podporována v Javě 21, ale v budoucnu bude zrušena. Tento JEP aktualizuje systém sestavení tak, aby při pokusu o konfiguraci sestavení pro Windows 32bitový x86 (x86-32) vydal chybovou zprávu. Chybová zpráva bude potlačitelná pomocí nové možnosti konfigurace, ale cílem je vyzvat vás, abyste přešli mimo tuto platformu.
- JEP 451: Připravte se zakázat dynamické načítání agentů. Tento JEP vás připraví na budoucí vydání JDK, které ve výchozím nastavení zakáže načítání agentů do běžícího JVM. Dělá to tak, že při dynamickém načítání agentů do běžícího JVM vydává varování. Všimněte si, že servisní nástroje, které načítají agenty při spuštění, nezpůsobí vydání varování v žádné verzi. Tento JEP spojuje schopnost dynamicky načítat agenty s dalšími takzvanými „superpower“ schopnostmi, jako je hluboká reflexe.
- JEP 452: API mechanismu zapouzdření klíče. Mechanismy zapouzdření klíčů (KEM) poskytují moderní kryptografické techniky, které zajišťují symetrické klíče pomocí asymetrické nebo veřejné kryptografie. Toto rozhraní API vám umožňuje používat několik algoritmů KEM a také umožňuje poskytovatelům zabezpečení implementovat algoritmy KEM v kódu Java nebo v nativním kódu.
Náhled a inkubátor JEPs
Následují náhledy a inkubátory v Javě 21.
Chcete-li používat tyto JEP, budete muset použít příslušné příznaky; podrobnosti naleznete v dokumentaci každého JEP.
- JEP 430: Šablony řetězců (náhled). Tento JEP zjednodušuje psaní programů Java tím, že usnadňuje vyjadřování řetězců, které obsahují hodnoty vypočítané za běhu, a zlepšuje čitelnost výrazů, které kombinují text a výrazy, ať už se text vejde na jeden zdrojový řádek nebo zahrnuje několik zdrojových řádků. Zlepšuje také zabezpečení programů Java, které skládají řetězce z hodnot zadaných uživatelem a předávají je jiným systémům.
- JEP 442: API cizích funkcí a paměti (třetí náhled). Tento JEP poskytuje nové API, které pomáhá programům Java spolupracovat s kódem a daty mimo běhové prostředí Java. Efektivním vyvoláváním cizích funkcí (kód mimo JVM) a bezpečným přístupem k cizí paměti (paměť nespravovaná JVM) umožňuje API programům Java volat nativní knihovny a zpracovávat nativní data bez křehkosti a nebezpečí Java Native Interface (JNI).).
- JEP 443: Nepojmenované vzory a proměnné (náhled). Tento JEP vylepšuje jazyk Java o nepojmenované vzory, které odpovídají komponentě záznamu bez uvedení názvu nebo typu komponenty, a nepojmenované proměnné, které lze inicializovat, ale nepoužívat. Oba jsou označeny znakem podtržítka, _.
- JEP 445: Nepojmenované třídy a hlavní metody instance (náhled). Tento JEP nabízí hladký přechod na Javu, takže pedagogové mohou postupně zavádět koncepty programování. Činí tak zmenšením vzoru a obřadů, aby studenti mohli psát své první programy, aniž by museli rozumět jazykovým prvkům navrženým pro velké programy; zároveň nezavádí samostatný dialekt pro začátečníky pro Javu ani samostatný toolchain.
- JEP 446: Hodnoty s rozsahem (náhled). Tento JEP poskytuje programovací model pro sdílení dat v rámci vlákna i s podřízenými vlákny, aby se zjednodušilo uvažování o toku dat. Model zajišťuje, že data sdílená volajícím mohou získat pouze legitimní volaní, a také zachází se sdílenými daty jako s neměnnými, aby bylo možné je sdílet mnoha vlákny a optimalizovat běhové prostředí.
- JEP 448: Vector API (šestý inkubátor). Toto nové API vyjadřuje vektorové výpočty, které se za běhu spolehlivě kompilují do optimálních vektorových instrukcí na podporovaných architekturách CPU, čímž se dosahuje výkonu lepšího než ekvivalentní skalární výpočty. Do vektorových masek také přidává operaci výhradní nebo (XOR) a zlepšuje výkon vektorového náhodného přehrávání, zvláště když se používají k přeuspořádání prvků vektoru nebo převodu mezi vektory.
- JEP 453: Strukturovaná souběžnost (náhled). Tento JEP zjednodušuje souběžné programování zavedením API pro strukturovaný souběžný provoz a podporuje styl souběžného programování, který může eliminovat běžná rizika vyplývající ze zrušení a vypnutí, jako jsou úniky vláken a zpoždění zrušení.
Stáhněte si Java 21 a začněte pracovat ještě dnes
Referenční implementaci Java 21 OpenJDK lze získat z https://jdk.java.net/21/. Implementaci společnosti Oracle, Java SE 21, lze nalézt na adrese https://www.oracle.com/java/technologies/downloads/.
Oracle Java SE 21 je vydání s dlouhodobou podporou (LTS). Oracle nabídne dlouhodobou podporu Java 21 po dobu nejméně osmi let. Tato prodloužená doba podpory poskytuje organizacím flexibilitu, aby aplikace udržely v provozu déle s minimální údržbou, a případně migrovaly podle vlastních podmínek.
Vezměte prosím na vědomí, že na základě zpětné vazby od zákazníků a používání v ekosystému Java společnost Oracle také oznámila, že dlouhodobá podpora pro Java 11 byla prodloužena nejméně do ledna 2032, což poskytuje dalších nejméně osm let podpory a aktualizací od společnosti Oracle.
Zdroj: Oracle