„Není Java jako Java“, aneb Co nainstalovat, když chci svobodně programovat
Není tomu tak dávno, co jsem se rozhodl trochu zaplout do vod programovacího jazyka Java a naučit se v něm přinejmenším nějaké ty základy a později, pokud tomu bude nakloněná konstelace hvězd, se v jeho knihovnách, funkcích a nástrojích zorientovat trochu více.
Co se týče samotné Javy, jedná se o objektově orientovaný programovací jazyk, který spatřil světlo světa v květnu 1995 v laboratořích firmy Sun Microsystems, k níž se blíže dostaneme záhy. Autorem je kanadský programátor James Gosling. Programy v Javě napsané běží v rámci takzvané Java Virtual Machine, která se vyznačuje svou přenositelností – zjednodušeně řečeno tak z Javy dělá nejpřenositelnější programovací jazyk, který umožňuje psaní softwaru jak pro de facto veškeré za zmínku hodné operační systémy jak na osobních počítačích, tak na smartphonech, ale i na širokém spektru dalších zařízení, jako jsou například prvky chytré domácnosti, či obskurnosti typu lednice.
Nyní na skok k samotnému Sunu. Svého času velmi známá a úspěšná firma na poli IT, která měla nezanedbatelný podíl na vývoji softwaru jako Solaris, MySQL, Virtualbox, či StarOffice – předchůdce dnešních LibreOffice. Jako takový je dnes Sun již minulostí – v roce 2009 proběhla akvizice za strany Oraclu, pod jehož křídla nyní Sun spadá. Za co je nutné Sun pochválit je skutečnost, že během své existence uvolnil mnohé ze svých projektů jako opensource, což je něco, k čemuž se aktuální vlastník, tedy Oracle zpravidla neuchyluje. A právě v tomto bodě se oklikou dostáváme k v úvodu zmiňované Javě.
V roce 2007, tedy dva roky před akvizicí Oraclem uvolnil Sun pod licencí GNU GPL otevřenou implementaci Javy pod názvem OpenJDK. Tento projekt se následně stal základem pro mnohé další implementace, kterých je dnes dostupných hned několik. Proč hovořím o OpenJDK? Protože OpenJDK, respektive Java SE je nezbytnou komponentou nutnou pro psaní aplikací v Javě.
A nyní si pokusíme znázornit postup, který provede člověk se zájmem programovat v Javě. Na Windows není Java standardně přítomna, je proto nutné ji nainstalovat. Zadáme tedy do Googlu dotaz java download. První dvě stránky nás dovedou na oficiální webové stránky Oraclu – java.com a oracle.com. Co se týče java.com, zde je zájemcům nabídnuta Java v poněkud neaktuální verzi 8, web Oraclu pak nabízí verze krapet novější – 17 a 21. Oba weby jsou snadno srozumitelné a není tak těžké na nich najít tlačítko pro stažení kýženého JDK. Uživatel ho tak stáhne, doplní ho vhodným vývojovým prostředím a hurá programovat! Je tu však jeden háček.
Nebudu chodit kolem horké kaše, zmíněný háček se týká licencování Oracle JDK, k jehož instalaci ze strany uživatele došlo. V roce 2019 přistoupil Oracle ke změně licencování tohoto produktu, a to z dosavadní Oracle Java Licence na Oracle Technology Network Licence Agreement. Nebudu zabíhat do detailů a rovnou tak zmíním, že tyto licenční změny významně omezily možnosti nasazení oficiálního Oracle JDK. Nejpodstatnější změnou je, že od 16. dubna 2019 zamezil Oracle využívání JDK od verze 11 k jakýmkoliv komerčním, výrobním, či interním podnikatelským účelům. Chtěli byste prostřednictvím Oracle JDK vyvíjet komerční software? Nechejte se zkasírovat v rámci Java Subscription, jejíž cena se pohybuje od 5,25 do 15 USD měsíčně, podle počtu licencí. Jinými slovy – chcete nad 40 tisíc licencí? Za každou zaplatíte pouze 5,25 dolarů. Vystačíte si pouze s jednou? Pak si nachystejte dolarů patnáct.
Oracle si pravděpodobně mnul ruce s očekáváním masivního přísunu předplatitelů, nic takového se však nekonalo a proto se v roce 2023 rozhodl od této strategie ustoupit. Javu verze 17 a vyšší je tak opět možné bezplatně využít i ke komerčnímu použití. Chcete-li však i nadále využívat Javu 11, poplatkům se nevyhnete.
Jak je vidno, Oracle je poněkud nevyzpytatelný a nabízí se tak otázka, co dělat, abych při svém programování nemusel co půl roku kontrolovat, zda-li jeho management zase nepřišel s něčím novým.
Možností co s tím je hned několik. První možnost je trpět chování tohoto technologického giganta a nadále využívat oficiální Oracle JDK. V takovém případě je však nutné mít napaměti, že mi do mých aktivit může v budoucnu nějaký manažer házet vidle. Druhou variantou je využití zmiňovaného OpenJDK, na něhož se rozmary společnosti z licenčních důvodů nevztahují. Navíc, jak sám Oracle zmiňuje, OpenJDK je s Oracle JDK kompatibilní. Zdá se tedy, že není co řešit, avšak není všechno zlato co se třpytí. I zde si Oracle své postavení pojistil.
V produkčním nasazení se Java zpravidla využívá ve svých LTS edicích, které poskytují dlouhodobou podporu. Oracle JDK touto podporou disponuje, OpenJDK však nikoliv a pokud se jej tedy rozhodnete využívat, budete nuceni Javu průběžně updatovat na nové verze, což vám může přivodit spoustu vrásek při následném opravování vašich rozjetých projektů. Ani tato varianta tak není ideální.
Naštěstí jsou zde třetí strany, které LTS verzi OpenJDK poskytují, ve většině případů zdarma a bez licenčních omezení. Instalací takového JDK tak získáte vývojářskou platformu kompatibilní s oficiální platformou Oraclu, kterou však můžete libovolně využívat i k tvorbě komerčních projektů, a to bez omezení.
Implementací je přehršel, za zmínku však stojí zejména Azul Zulu, Amazon Coretto, Bellsoft Liberica, Eclipse Temurin, Microsoft OpenJDK či RedHat OpenJDK. Zmíněných variant je více než dost a je tak možné, že budou někteří z vás čtenářů zmateni nevědíc, kterou variantu zvolit. Rozdíly jsou minimální, takže lze konstatovat, že na tom nezáleží. Pokud by vás však i tyto minimální rozdíly zajímaly, doporučuji zavítat na web Jochena Krista, kde jsou veškeré zmíněné a mnohé další varianty detailněji rozebrány.
Možná si říkáte, že celý článek je zbytečné haló kolem problému, který vlastně problémem není. Pro domácího uživatele, který vyvíjí čistě pro svou potřebu není opravdu toto téma něčím, z čeho by si měl dělat těžkou hlavu. Pokud však kdokoliv uvažuje o jakémkoliv vývoji nad rámec nekomerčních osobních projektů, měl by se ve svých možnostech orientovat.