Java SE: Aké funkcie prinášajú najnovšie verzie Java SE 11, 17 LTS a 19
Schopnosť jazyka Java zvyšovať výkon, stabilitu a bezpečnosť z nej robí už dlhodobo najpopulárnejší programovací jazyk na svete. Podľa správy IDC ju používa viac ako 10 miliónov vývojárov, čo predstavuje približne 33 % softvérových inžinierov na celom svete. Od jej vzniku vyšlo už dvadsaťjeden oficiálne podporovaných verzií Java SE. V článku sa pozrieme to, aké funkcie prinášajú jednotlivé Java verzie.
História Java – aké Java platformy poznáme a na čo slúžia
Java je programovací jazyk a platforma, ktorá bola vyvinutá v roku 1995 firmou Sun Microsystems, dcérskou spoločnosťou firmy Oracle. Tá poskytuje platformu na vývoj aplikačného softvéru a jeho nasadenie v multiplatformovom výpočtovom prostredí.
Za „otca“ programovacieho jazyka Java je považovaný James Gosling, ktorý spolu s členmi Java tímu, nazývaného aj tzv. Green Team, začali na vývoji pracovať začiatkom 90. rokov. Cieľom tohto projektu bolo vyvinúť jazyk pre digitálne zariadenia, ako sú set-top boxy, televízory atď. V súčasnosti sa programovanie v Jave používa pri vývoji internetových aplikácií, aplikácií pre mobilné zariadenia, počítačových hier, e-business riešeniach a podobne.
Od svojho vzniku prešiel programovací jazyk Java mnohými vylepšeniami a rozšíreniami, ktoré zabezpečili nové programovacie možnosti a zlepšili prívetivosť používateľského rozhrania. Java verzie prechádzajú neustálym vývojom, no vo všeobecnosti môžeme zadefinovať 4 platformy v Jave, a to Java SE, Java EE, Java ME a Java FX.
Platforma Java SE
Java Standard Edition alebo skrátene Java SE je základná platforma Java programovania. Môžeme na nej spúšťať softvér alebo ju použiť na vývoj desktopových a serverových aplikácií. Na používanie Java SE sa využíva programovací jazyk Java, pričom táto platforma je súčasťou rodiny softvérových platforiem s rovnomenným názvom. Java SE poskytuje všetky knižnice dátových štruktúr a rozhrania API, ako sú java.lang, java.io, java.math, java.net, java.util atď.
Na čo slúžia knižnice dátových štruktúr
Knižnice dátových štruktúr obsahujú preddefinované triedy, ktoré poskytuje Java System. Existujú tisíce knižničných tried, pričom každá trieda obsahuje rôzne funkcie. Tieto triedy tak poskytujú efektívnu podporu programátorom pri vývoji ich programov. Tie zjednodušujú a zefektívňujú prácu.
Java Application Programming Interface (API)
API alebo Java Application Programming Interface predstavuje zoznam všetkých tried, ktoré sú súčasťou Java development kit (JDK). Zahŕňa teda všetky Java balíky, triedy a rozhrania spolu s ich metódami, poliami a komentármi autorov. Tieto predpísané triedy poskytujú programátorovi obrovské množstvo funkcií, ktoré môže využiť pre programovanie Java.
Vedel si, že...
… pôvodný názov jazyka Java mal byť Oak (dub) podľa dubu, ktorý stál pred Goslingovou kanceláriou. Neskôr dostal názov Green a finálne sa premenoval na Java podľa názvu odrody kávy, ktorá sa pestuje na rovnomennom indonézskom ostrove.
Hlavné výhody Java SE platform
- Poskytuje možnosti využívania princípov objektovo orientovaného programovania a nadradených tried, ktoré sú používané aj na vytváranie sietí (tzv. networking), abstrakcie, vyššiu bezpečnosť, prístup k databázam, vývoj GUI (Graphical User Interface) a analýzu vo formáte napr. XML.
- Obsahuje triedu Collectors, ktorá umožňuje akumulovať prvky do kolekcií a sumarizovať údaje podľa rôznych kritérií.
- Poskytuje triedu Base64 pre šifrovanie a dešifrovanie.
- Disponuje rozhraniami API, ktoré umožňujú efektívnejšie výpočty a programovanie.
- Do Java SE bola pridaná nová trieda java.net.URLPermission, ktorá predstavuje povolenie na prístup k zdroju definovanému z danej URL.
Okrem bežného programovacieho jazyka Java však existuje ešte jeden špecifický model Javy, ktorým je Java LTS.

Čo je Java LTS a ako sa líši od bežnej Javy
Java vývojári poctivo pracujú na nových vylepšených verziách Java SE kvôli zdokonaľovaniu funkčnosti systému. Od jej vzniku vychádzali Java verzie nepravidelne, preto sa v roku 2018 spoločnosť Oracle rozhodla pre zmenu pravidelnosti vydávania nových verzií platformy Java SE. Namiesto pôvodného intervalu vydávania každé dva až tri roky (z ktorých sa často stávali až štyri) sa použil nový šesťmesačný model klasických verzií Java SE a každé 3 roky sa vydá vydanie s dlhou podporou LTS (Long Time Support). Prvá verzia Java vydaná pod týmto modelom bola Java SE 11.
Výhodou verzií LTS je skutočnosť, že sa organizácie môžu spoľahnúť na to, že Java verzie budú k dispozícii najmenej osem rokov, čo vývojárom poskytuje dostatok času na upevnenie nástrojov a na prechod na inú Java LTS verziu o niekoľko rokov neskôr. Model LTS umožňuje poskytovateľom technológií zamerať sa na konkrétne verzie pri dlhodobej podpore svojich produktov. Každá verzia dostane počas fungovania iba aktualizácie výkonu, stability a zabezpečenia, takže k závažným zmenám v jednotlivých verziách Javy by nemalo prichádzať.
Najnovšie verzie Java SE
Od vzniku prvej Java verzie JDK Beta v roku 1995 ubehli už takmer dve desaťročia. Za ten čas bolo vytvorených zatiaľ dvadsaťjeden Java verzií. Prvou LTS verziou s dlhodobou podporou bola verzia Java SE 7, ktorá vyšla v júli 2011. Ďalšia verzia Java SE 8 prišla na trh v marci 2014. Táto verzia obsahuje niektoré funkcie pôvodne navrhnuté pre Java SE 7, no pridané boli až v Java SE 8. Ide o funkcie ako:
- podpora výrazov Lambda na jazykovej úrovni,
- možnosť vkladať kód JavaScript do aplikácií,
- anotácia Java verzií,
- poskytnutie dátumového a časového rozhrania API,
- opakujúce sa anotácie,
- spustenie JavaFX aplikácií.
Ďalšími dostupnými verziami sú Java SE 11 LTS a Java SE 17 LTS, pričom ďalšia verzia Java SE 21 LTS sa očakáva v septembri 2023.
Verzia Java SE 11 LTS
Java 11 je po Java 8 tretím vydaním LTS verzie Java. Toto vydanie si môžeš stiahnuť a používať zadarmo, avšak iba pre nekomerčný vývoj. Na vývoj komerčných aplikácií si už musíš zakúpiť licenciu na oficiálnej stránke Oracle. Predplatitelia Java SE budú dostávať aktualizácie JDK 11 minimálne do septembra 2026.
Verzia Java SE 11 LTS prináša niekoľko dôležitých funkcií pre vývojárov softvéru. Jednou z hlavných zmien je, že nemusíš najprv kompilovať zdrojový súbor Java pomocou nástroja javac. Súbor môžeš priamo spustiť príkazom java a implicitne sa skompiluje. Táto funkcia patrí pod JEP 330.
Ďalšie dôležité funkcie vo verzii Java SE 11:
-
- Nové pomocné metódy v triede String, ako isBlank(), lines(), strip(), stripLeading(), stripTrailing() a repeat(int).
- Syntax lokálnej premennej pre parametre Lambda.
- JEP 309: Dynamické konštanty triedy. Rozšírenie podpory o novú formu konštantnej oblasti CONSTANT_Dynamic. Cieľom tohto JEP je znížiť náklady.
- JEP 321: HTTP klient. Nové API podporuje HTTP/1.1 aj HTTP/2 a je navrhnutý tak, aby zlepšil celkový výkon odosielania požiadaviek klienta a prijímania odpovedí zo servera.
- JEP 328: Flight Recorder. JFR je profilovací nástroj používaný na zhromažďovanie diagnostických dát zo spustenej Java aplikácie.
- Zjednodušené čítanie a písanie reťazca String pomocou readString(), writeString().
Odporúčame ti...
Syntax lokálnej premennej pre parametre Lambda je jediným vydaním jazykovej funkcie v jazyku Java 11. V Java 10 bola zavedená inferencia typu miestnej premennej založená na odvodzovaní. Typ premennej by sme teda mohli odvodiť ako var list = new ArrayList<String>(); JEP 323 umožňuje deklarovať pomocou var formálne parametre implicitne typovaného výrazu lambda. Teraz môžeme definovať:
(var s1, var s2) -> s1 + s2

Java verzia SE 17 LTS
Dôležitou zmenou v rámci Oracle JDK 17 bolo zavedenie nových a jednoduchších licenčných podmienok, ktoré umožnia spoločnostiam používať Oracle JDK 17 bezplatne počas najmenej troch nasledujúcich rokov. Predplatitelia Java SE získajú prístup k podpore Oracle Java SE a ku komerčným funkciám, ako sú GraalVM Enterprise, Java Management Service a Advanced Management Console.
Java 17 LTS predstavuje zatiaľ posledné vydanie dlhodobej podpory pre platformu Java SE a obsahuje 14 nových funkcií, ktoré uľahčia a zefektívnia prácu vývojárov po celom svete. Medzi najzásadnejšie zmeny vo verzii Java 17 považujeme:
- JEP 356: Vylepšené generátory pseudonáhodných čísel. Verzia poskytuje nové typy rozhraní a implementácie pre generátory pseudonáhodných čísel (PRNG) s cieľom eliminovať duplicitu kódu v existujúcich triedach PRNG.
- JEP 382: Nový kanál vykresľovania macOS. Interný kanál vykresľovania pre Java 2D pre macOS pomocou rozhrania Apple Metal API ako alternatívy k existujúcemu kanálu, ktorý používa zastarané rozhranie Apple OpenGL API.
- JEP 403: Silne zapuzdrené vnútorné časti JDK všetkých interných prvkov JDK, okrem kritických interných rozhraní API, ako je sun.misc.Unsafe. Už nebude možné uvoľniť silné zapuzdrenie vnútorných prvkov pomocou jediného príkazového riadka.
- JEP 411: Odstránenie Security Managera.
- JEP 415: Kontextovo špecifické deserializačné filtre. Táto zmena umožňuje aplikáciám konfigurovať kontextovo špecifické a dynamicky vybrané filtre deserializácie prostredníctvom továrne na filtre v rámci JVM, ktorá sa vyvolá na výber filtra pre každú jednotlivú operáciu deserializácie.
Najnovšia verzia Java SE 19
Toto vydanie je desiatym vydaním funkcií dodaným v rámci šesťmesačnej frekvencie vydávania. Táto úroveň predvídateľnosti umožňuje vývojárom jednoducho riadiť vydávanie inovácií, ale je potrebné upozorniť na to, že Oracle JDK 19 nie je vydanie s dlhou podporou (LTS).
Zmeny v najnovšej verzii Java 19 zahŕňajú rôzne vylepšenia, a to od zakomponovania významných nových funkcií cez malé vylepšenia až po rutinnú údržbu. Aktualizácie a vylepšenia Java SE 19 sú nasledovné:
- JEP 405: Záznamové vzory. Toto vylepšenie umožňuje používateľom vkladať vzory záznamov a typové vzory na vytvorenie výkonnej, deklaratívnej a komponovateľnej formy navigácie a spracovania dát.
- JEP 422: Linux/RISC-V Port vytvára pôdu pre jednoduchšie implementácie Linux/RISC-V integráciou tohto portu do hlavného repozitára JDK.
- JEP 427: Zhoda vzorov pre prepínače umožňuje porovnávanie vzorov pre výrazy a príkazy prepínačov tým, že povoľuje testovanie výrazu voči množstvu vzorov.
- JEP 424: Rozhranie API pre cudzie funkcie a pamäť umožňuje programom Java jednoduchšiu spoluprácu s kódom a údajmi mimo runtime Java.
- JEP 426: Vector API zabezpečuje lepší výkon v porovnaní s ekvivalentnými skalárnymi výpočtami vyjadrením vektorových výpočtov, ktoré sa spoľahlivo kompilujú za behu do vektorových inštrukcií na podporovaných architektúrach CPU.
Vedel si, že...
… efektívnym vyvolaním cudzích funkcií v JEP 427 (t. j. kódu mimo Java Virtual Machine [JVM]) a bezpečným prístupom k cudzej pamäti (t. j. k pamäti nespravovanej JVM) umožňuje toto API vyvolať programom Java natívne knižnice a spracovávať natívne dáta cez čistý vývojový model Java 19. Výsledkom je zvýšená jednoduchosť používania, výkon, flexibilita a bezpečnosť.
Spoločnosť Oracle oznámila plány na skrátenie času medzi budúcimi vydaniami LTS z troch rokov na dva roky. Ďalšou verziou Java SE LTS by tak mala byť Java 21, ktorá vyjde v septembri 2023. Nová Java prinesie ešte inovatívnejšie funkcie a Java programovanie bude znova o niečo dokonalejšie. Táto verzia by mala poskytovať podporu minimálne do roku 2031.
U nás v msg life Slovakia na programovanie v jazyku Java aktuálne používame verziu Java SE 11 (LTS), ktorá sa nám veľmi osvedčila. Čoskoro však prejdeme na Java SE 17 (LTS) so 14 novými funkciami pre zefektívnenie, zlepšenie a urýchlenie našej práce, pričom túto Java verziu si môžeš vyskúšať aj ty.
Pozri si naše predchádzajúce články s tématikou Java programovania:
- Programovanie pre začiatočníkov,
- Ako sa naučiť programovať,
- Java vs. Golang vs. Python programovanie.
Či už si skúsený Java programátor senior, alebo zanietený Java programátor junior, v našom tíme sa pre teba vždy nájde miesto. Pridaj sa k nám, zlepši svoje znalosti Java programovania a podieľaj sa s nami na vývoji inovatívnych softvérových riešení pre finančných a poistných lídrov na trhu. Pozri si voľné pracovné miesta a pošli nám tvoje CV.