Díky své schopnosti zvyšovat výkon, stabilitu a bezpečnost je Java již dlouho nejoblíbenějším programovacím jazykem na světě. Podle zprávy IDC jej používá více než 10 milionů vývojářů, což představuje přibližně 33 % softwarových inženýrů na celém světě. Od vzniku Javy SE bylo vydáno dvacet jedna oficiálně podporovaných verzí. V tomto článku se podíváme, jaké funkce přinášejí jednotlivé verze Javy.
Jaké platformy Java známe a k čemu slouží?
Java je programovací jazyk a platforma, kterou v roce 1995 vyvinula společnost Sun Microsystems, dceřiná společnost společnosti Oracle. Poskytuje platformu pro vývoj aplikačního softwaru a jeho nasazení v multiplatformním počítačovém prostředí.
Za „otce“ programovacího jazyka Java je považován James Gosling, který spolu s členy týmu Java, známého také jako Green Team, začal pracovat na jeho vývoji na počátku 90. let. Cílem tohoto projektu bylo vyvinout jazyk pro digitální zařízení, jako jsou set-top boxy, televizory atd. Programování v jazyce Java se dnes používá při vývoji webových aplikací, mobilních aplikací, počítačových her, e-business řešení atd.
Od svého vzniku prošel programovací jazyk Java mnoha vylepšeními a rozšířeními, která přinesla nové programovací možnosti a zlepšila uživatelskou přívětivost uživatelského rozhraní. Verze Javy procházejí neustálým vývojem, ale obecně můžeme definovat 4 platformy Javy, a to Java SE, Java EE, Java ME a Java FX.
Platforma Java SE
Java Standard Edition nebo zkráceně Java SE je základní platformou pro programování v jazyce Java. Můžeme na něm spouštět software nebo jej používat k vývoji desktopových a serverových aplikací. Java SE používá programovací jazyk Java a je součástí stejnojmenné rodiny softwarových platforem. Java SE poskytuje všechny knihovny datových struktur a rozhraní API, jako jsou java.lang, java.io, java.math, java.net, java.util atd.
K čemu slouží knihovny datových struktur
Knihovny datových struktur obsahují předdefinované třídy poskytované systémem Java. Existují tisíce knihovních tříd, přičemž každá třída obsahuje různé funkce. Tyto třídy tak poskytují programátorům účinnou podporu při vývoji jejich programů. Usnadňují a zefektivňují práci.
Java Application Programming Interface (API)
API neboli Java Application Programming Interface je seznam všech tříd, které jsou součástí vývojové sady Java (JDK). Obsahuje tedy všechny balíky, třídy a rozhraní Javy spolu s jejich metodami, poli a komentáři autora. Tyto předdefinované třídy poskytují programátorovi obrovské množství funkcí, které lze využít při programování v jazyce Java.
Věděl jsi, že...
… původní název jazyka Java měl být Oak, podle dubu, který stál před Goslingovou kanceláří. Později dostala název Green a nakonec byla přejmenována na Jávu podle názvu odrůdy kávy pěstované na stejnojmenném indonéském ostrově.
Hlavní výhody Java SE
- Poskytuje možnost používat principy objektově orientovaného programování a nadtřídy, které se používají také pro vytváření sítí, abstrakci, zvýšené zabezpečení, přístup k databázím, vývoj grafického uživatelského rozhraní (GUI) a parsování ve formátech, jako je XML.
- Obsahuje třídu Collectors, která umožňuje hromadit prvky do kolekcí a shrnovat data podle různých kritérií.
- Poskytuje třídu Base64 pro šifrování a dešifrování.
- Má rozhraní API, které umožňuje efektivnější výpočty a programování.
- Do Java SE byla přidána nová třída java.net.URLPermission, která představuje oprávnění k přístupu k prostředku definovanému z dané adresy URL.
Kromě běžného programovacího jazyka Java však existuje ještě jeden specifický model Javy, a to Java LTS.
Co je Java LTS a jak se liší od běžné Javy?
Vývojáři Javy poctivě pracují na nových a vylepšených verzích Javy SE, aby zlepšili funkčnost systému. Od svého vzniku byly verze Javy vydávány nepravidelně, proto se společnost Oracle v roce 2018 rozhodla změnit pravidelnost vydávání nových verzí platformy Java SE. Namísto původního intervalu vydávání každé dva až tři roky (který se často prodloužil až na čtyři roky) byl přijat nový šestiměsíční model klasických verzí Javy SE s vydáním LTS (Long Time Support) každé tři roky. První verzí Javy vydanou podle tohoto modelu byla Java SE 11.
Výhodou vydání LTS je, že organizace mohou počítat s tím, že verze Javy budou k dispozici nejméně osm let, což vývojářům dává dostatek času na opravu nástrojů a přechod na další vydání LTS Javy o několik let později. Model LTS umožňuje poskytovatelům technologií zaměřit se na konkrétní verze a zároveň dlouhodobě podporovat své produkty. Každá verze dostává aktualizace výkonu, stability a zabezpečení pouze za běhu, takže by nemělo docházet k zásadním změnám jednotlivých verzí Javy.
Nejnovější verze Java SE
Od vydání první betaverze JDK v roce 1995 uplynulo téměř třicet let. Za tu dobu bylo vytvořeno 21 verzí jazyka Java. První verzí LTS s dlouhodobou podporou byla Java SE 7 vydaná v červenci 2011. Další verze, Java SE 8, byla vydána v březnu 2014. Tato verze obsahuje některé funkce původně navržené pro Javu SE 7, ale přidané až v Javě SE 8. Mezi ně patří např.:
- Podpora výrazů lambda na úrovni jazyka,
- možnost vkládat kód JavaScriptu do aplikací,
- Anotace verze jazyka Java,
- poskytování rozhraní API pro datum a čas,
- opakující se anotace,
- spouštění aplikací JavaFX.
Dalšími dostupnými verzemi jsou Java SE 11 LTS a Java SE 17 LTS, přičemž další vydání, Java SE 21 LTS, se očekává v září 2023.
Verze Java SE 11 LTS
Java 11 je po Javě 8 třetí verzí LTS Javy. Tuto verzi si můžete stáhnout a používat zdarma, ale pouze pro nekomerční vývoj. Pro vývoj komerčních aplikací je nutné zakoupit licenci na oficiálních stránkách společnosti Oracle. Předplatitelé Javy SE budou dostávat aktualizace JDK 11 nejméně do září 2026.
Verze Java SE 11 LTS přináší několik důležitých funkcí pro vývojáře softwaru. Jednou z hlavních změn je, že nemusíte nejprve zkompilovat zdrojový soubor jazyka Java pomocí nástroje javac. Soubor můžete spustit přímo příkazem java a implicitně se zkompiluje. Tato funkce spadá pod JEP 330.
Další důležité funkce v Java SE 11:
- Nové pomocné metody ve třídě String, například isBlank(), lines(), strip(), stripLeading(), stripTrailing() a repeat(int).
- Syntaxe lokální proměnné pro parametry Lambda.
- JEP 309: Dynamické konstanty tříd. Rozšíření podpory pro nový tvar konstantního pole CONSTANT_Dynamic. Cílem této JEP je snížit náklady.
- JEP 321: Klient HTTP. Nové rozhraní API podporuje protokoly HTTP/1.1 i HTTP/2 a je navrženo tak, aby zlepšilo celkový výkon při odesílání klientských požadavků a přijímání odpovědí serveru.
- JEP 328: Letový zapisovač. JFR je profilovací nástroj, který slouží ke shromažďování diagnostických dat ze spuštěné aplikace Java.
- Zjednodušené čtení a zápis řetězce pomocí readString(), writeString().
Doporučujeme ti...
Syntaxe lokální proměnné pro parametry lambda je jediným uvolněním funkce jazyka v Javě 11. V Javě 10 byla zavedena inference typu lokální proměnné na základě inference. Typ proměnné lze tedy odvodit jako var list = new ArrayList<String>(); JEP 323 umožňuje deklarovat formální parametry implicitně typovaného lambda výrazu pomocí var. Nyní můžeme definovat:
(var s1, var s2) -> s1 + s2
Java verze SE 17 LTS
Důležitou změnou v Oracle JDK 17 bylo zavedení nových a jednodušších licenčních podmínek, které umožní společnostem používat Oracle JDK 17 zdarma nejméně po dobu následujících tří let. Předplatitelé Java SE získají přístup k podpoře Oracle Java SE a komerčním funkcím, jako jsou GraalVM Enterprise, Java Management Service a Advanced Management Console.
Java 17 LTS představuje dosud poslední verzi dlouhodobé podpory platformy Java SE a obsahuje 14 nových funkcí, které vývojářům po celém světě usnadní a zefektivní práci. Mezi nejvýznamnější změny v Javě 17 patří:
- JEP 356: Vylepšené generátory pseudonáhodných čísel. Tato verze poskytuje nové typy rozhraní a implementace pro generátory pseudonáhodných čísel (PRNG), aby se odstranila duplicita kódu ve stávajících třídách PRNG.
- JEP 382: Nový kanál pro vykreslování v systému macOS. Interní vykreslovací kanál pro Javu 2D pro macOS využívající rozhraní Apple Metal API jako alternativu ke stávajícímu kanálu, který používá zastaralé rozhraní Apple OpenGL API.
- JEP 403: Silně zapouzdřené interní rozhraní JDK všech interních rozhraní JDK, s výjimkou kritických interních rozhraní API, jako je sun.misc.Unsafe. Již nebude možné uvolnit silné zapouzdření vnitřních součástí pomocí jediného příkazového řádku.
- JEP 411: Odstranění správce zabezpečení.
- JEP 415: Kontextově specifické deserializační filtry. Tato změna umožňuje aplikacím konfigurovat kontextově specifické a dynamicky vybírané deserializační filtry prostřednictvím továrny na filtry v rámci JVM, která je vyvolána pro výběr filtru pro každou jednotlivou deserializační operaci.
Nejnovější verze Java SE 19
Tato verze je desátou verzí funkcí, která byla vydána v rámci šestiměsíční frekvence vydávání. Tato úroveň předvídatelnosti umožňuje vývojářům snadno řídit vydávání aktualizací, ale je třeba poznamenat, že Oracle JDK 19 není verze s dlouhodobou podporou (LTS).
Změny v nejnovější verzi Javy 19 zahrnují celou řadu vylepšení, od začlenění významných nových funkcí přes drobná vylepšení až po běžnou údržbu. Aktualizace a vylepšení verze Java SE 19 jsou následující:
- JEP 405: Vzory záznamů. Toto vylepšení umožňuje uživatelům vkládat vzory záznamů a vzory typů a vytvořit tak výkonnou, deklarativní a složitelnou formu navigace a zpracování dat.
- JEP 422: Linux/RISC-V Port vytváří podmínky pro snadnější implementaci Linux/RISC-V začleněním tohoto portu do hlavního repozitáře JDK.
- JEP 427: Porovnávání vzorů pro přepínače umožňuje porovnávání vzorů pro výrazy a příkazy přepínače tím, že umožňuje testování výrazů podle řady vzorů.
- JEP 424: Rozhraní API pro cizí funkce a paměť umožňují programům v jazyce Java snadněji komunikovat s kódem a daty mimo běhové prostředí jazyka Java.
- JEP 426: Vektorové rozhraní API poskytuje vyšší výkon než ekvivalentní skalární výpočty tím, že vyjadřuje vektorové výpočty, které se za běhu spolehlivě kompilují do vektorových instrukcí na podporovaných architekturách CPU.
Věděl jsi, že...
… efektivním voláním cizích funkcí v JEP 427 (tj. kódu mimo virtuální stroj Java [JVM]) a bezpečným přístupem k cizí paměti (tj. paměti, která není spravována JVM) umožňuje toto API programům v jazyce Java volat nativní knihovny a zpracovávat nativní data prostřednictvím čistého vývojového modelu Java 19. Výsledkem je vyšší snadnost použití, výkon, flexibilita a bezpečnost.
Společnost Oracle oznámila, že plánuje zkrátit dobu mezi budoucími vydáními LTS ze tří na dva roky. Příští verzí Java SE LTS by tedy měla být Java 21, která vyjde v září 2023. Nová Java přinese ještě více inovativních funkcí a programování v Javě bude opět o něco pokročilejší. Tato verze by měla poskytovat podporu nejméně do roku 2031.
Ve společnosti msg life Slovakia v současné době používáme pro programování v jazyce Java verzi SE 11 (LTS), která se nám velmi osvědčila. Brzy však přejdeme na Javu SE 17 (LTS) se 14 novými funkcemi, které zefektivní, zlepší a zrychlí naši práci, a tuto verzi Javy můžete vyzkoušet i vy.
Ať už jste zkušený programátor nebo nadšený vývojář, v našem týmu se pro vás vždy najde místo. Přidejte se k nám, zdokonalte se v programování v jazyce Java a spolupracujte s námi na vývoji inovativních softwarových řešení pro lídry finančního a pojišťovacího trhu. Podívejte se na naše otevřené pracovní příležitosti a pošlete nám svůj životopis.