Java news: Aká je najnovšia verzia Java 20 JDK

Prešlo opäť šesť mesiacov a spoločnosť Oracle oznámila 21. marca 2023 dostupnosť svojej najnovšej verzie najpopulárnejšieho programovacieho jazyka a vývojovej platformy na svete. V tomto článku sa budeme zameriavať na niektoré z najvýznamnejších noviniek. Najlepšie prínosy updatov predošlých verzií nájdeš v minulom článku Najlepšie Java aktuálizácie ver. SE 8 – SE 17.

Prehľad počtu noviniek vydaných v Java JDK a časový rozostup medzi nimi.
Prehľad počtu noviniek vydaných v Java JDK a časový rozostup medzi nimi. ZDROJ: blogs.oracle.com

Java SE 20 (Oracle JDK 20) prináša tisíce vylepšení v oblasti výkonu, stability a bezpečnosti vrátane vylepšení platformy, ktoré pomôžu vývojárom zvýšiť produktivitu a podporiť inovácie a rast vo svojich organizáciách. Je to už viac ako 25 rokov, čo Java umožňuje vývojárom navrhovať a budovať nové generácie robustných, škálovateľných a bezpečných aplikácií.

Oracle JDK 20 nie je vydanie s dlhodobou podporou (LTS – long-term support), preto bude dostávať aktualizácie iba dovtedy, kým ho o šesť mesiacov nenahradí JDK 21.

Posledným vydaním LTS Java tak stále ostáva Oracle JDK 17 (vydané 14. septembra 2021). Avšak Oracle oznámil plány na skrátenie času medzi vydaniami LTS z troch rokov na dva roky, takže JDK 21 je naplánované ako ďalšie LTS v septembri 2023.

Množstvo zmien v priebehu času vo vydaniach JDK sa veľmi nezmenilo, ale pod šesťmesačným tlakom vydávania nových verzií  sa tempo dodávania novej funkcionality a vylepšení pripravených do produkcie prudko zvýšilo. Namiesto toho, aby firma Oracle robila desaťtisíce opráv a dodávala takmer sto JEP (návrhov na zlepšenie JDK) každých pár rokov, ako to robili kedysi s hlavnými vydaniami, sú vylepšenia dodávané v skromnejších vydaniach na viac predvídateľnejšom šesťmesačnom harmonograme. Zmeny sa pohybujú od významnej novej funkcionality, cez malé vylepšenia až po rutinnú údržbu, opravy chýb a zlepšovanie dokumentácie. Každá zmena je reprezentovaná samostatným komitom (commit) a issue v systéme chýb JDK.

Vedel si, že...

Java je budovaná nielen Oracle, ale aj spoločným úsilím rozsiahlej globálnej komunity členov po celkom svete? Tak napríklad v Jave 20, zo všetkých 2314 JIRA issues, 1595 (69%) vyriešilo Oracle a 719 (31%) boli príspevkami ostatných členov Java komunity.

Novinky v Jave 20 JDK

Java 20 JDK obsahuje sedem JEPs návrhov na zlepšenie JDK (JDK Enhancement Proposals), ktoré majú za cieľ zvýšiť produktivitu vývojárov, zlepšiť jazyk Java a zvýšiť výkon, stabilitu a bezpečnosť platformy. Tieto funkcie zahŕňajú virtuálne vlákna, návrh vektorového API, štruktúrovanú súbežnosť, ohraničené hodnoty, API pre cudzie funkcie a pamäť, vzory záznamov a zhodovanie vzorov pre príkazy a výrazy switch.

Virtuálne vlákna (virtual threads)

Virtuálne vlákna sú ľahké vlákna, ktoré znižujú námahu pri písaní, údržbe a ladení vysokovýkonných súbežných aplikácií. Sú to inštancie triedy java.lang.Thread, ale nie sú viazané na konkrétne vlákno operačného systému. Keď kód bežiaci vo virtuálnom vlákne volá blokujúcu operáciu vstupu/výstupu, Java Runtime suspenduje virtuálne vlákno, až kým ho nemôže obnoviť. Operačné vlákno spojené so suspendovaným virtuálnym vláknom je teraz voľné na vykonávanie operácií pre iné virtuálne vlákna.

Virtuálne vlákna sú vhodné na spustenie úloh, ktoré trávia väčšinu času blokovaním, často čakajúc na dokončenie operácií vstupu/výstupu. Nie sú však určené pre dlhodobé operácie náročné na procesor.

Návrh vektorového API (vector API proposal)

Návrh vektorového API je nová funkcia v Java 20 JDK, ktorá zavádza API na vyjadrenie vektorových výpočtov, ktoré sa spoľahlivo kompilujú na optimálne vektorové inštrukcie na podporovaných architektúrach CPU a dosahujú tak výkon nadradený nad ekvivalentnými skalárnymi výpočtami.

Cieľom je poskytnúť jasné a stručné API, ktoré by bolo schopné vyjadriť širokú škálu vektorových výpočtov pozostávajúcich zo sekvencií vektorových operácií zložených do slučiek a možno aj s riadením toku. Malo by byť možné vyjadriť výpočet, ktorý je generický vo vzťahu k veľkosti vektora alebo počtu dráh na vektor, čím umožní prenositeľnosť takýchto výpočtov naprieč hardvérom podporujúcim rôzne veľkosti vektorov.

Štruktúrovaná súbežnosť (structured concurrency)

Ide o novú funkciu v Java SE 20 JDK, ktorá poskytuje API na zjednodušenie programovania viacvláknových aplikácií a spracovanie viacerých úloh bežiacich v rôznych vláknach ako jednej jednotky práce. Ošetrenie chýb a zrušenie vlákien sú zjednodušené, čo zlepšuje spoľahlivosť a zvyšuje pozorovateľnosť.

Jedinou zmenou oproti konceptu v JDK 19 je, že trieda StructuredTaskScope bola aktualizovaná tak, aby podporovala dedičnosť ohraničených hodnôt vláknami vytvorenými v rozsahu úloh.

Ohraničené hodnoty (scoped values)

Ohraničené hodnoty sú novinkou v Java 20 JDK, ktorá umožňuje vývojárom ukladať a zdieľať nemenné údaje vo vnútri a medzi vláknami. Toto nové API je zavedené v Java 20 JDK ako inkubátorská funkcia navrhnutá v JEP 439.

V Java 20 JDK je zavedená nová trieda jdk.incubator.concurrent.ScopedValue<T>, ktorá reprezentuje ohraničenú hodnotu ako pár kľúč-hodnota. V podstate predstavuje ohraničená hodnota hodnotu, ktorá sa nastaví iba raz a je dostupná na čítanie po obmedzenú dobu vo vlákne. Ohraničené hodnoty poskytujú zdieľanie údajov bez použitia argumentov metódy.

API pre cudzie funkcie a pamäť (foreign function and memory API)

Táto nová funkcia v Java 20 JDK umožňuje programom Java spolupracovať s kódom a údajmi mimo Java runtime. Efektívnym volaním cudzích funkcií (kód mimo Java Virtual Machine [JVM]) a bezpečným prístupom k cudzej pamäti (pamäť nie je spravovaná JVM) táto funkcia umožňuje programom Java volať natívne knižnice a spracovávať natívne údaje bez potreby Java Native Interface. To zvyšuje jednoduchosť použitia, výkon a bezpečnosť.

Vzory záznamov (record patterns)

Toto vylepšenie rozširuje jazyk Java tým, že umožňuje používateľom vnoriť vzory záznamov a typové vzory na vytvorenie silnej, deklaratívnej a kompozitnej formy navigácie a spracovania údajov. To pomáha zvyšovať produktivitu vývojárov tým, že im umožňuje rozšíriť zhodovanie vzorov tak, aby umožňovali sofistikovanejšie dopyty na údaje.

Zhodovanie vzorov pre príkazy a výrazy switch (pattern matching for switch statements and expressions)

Umožňuje vývojárom používať vzory v podmienkach switch. Oproti používaniu konštánt to poskytuje vyššiu flexibilitu a vyjadrovaciu silu.

Zhrnutie

Nové vydanie Java SE 20 JDK prináša okrem opravy chýb aj sedem návrhov na zlepšenie JDK na zvýšenie produktivity vývojárov, zlepšenie jazyka Java a zvýšenie výkonu, stability a bezpečnosti platformy.

Môžete si ju stiahnuť tu: Java SE 20 JDK download.

 

O autorovi

Jozef Wagner

Java Developer Senior

Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

Daj nám o sebe vedieť