Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?

Pořád z toho nejsem moudrej. Máme aplikaci napsanou programátorem v Java 8 JDK před cca 2ma roky. Teď řešíme jestli tuhle aplikaci, kvuli ktere musime Java 8 JDK nainstalovat aby běžela, můžeme vůbec oficiálně používat? A pokud ne, co dělat? Platí se za každou instalaci takové aplikace? Děkuji za stručnou odpověď pokud ji někdo zná ...
« Poslední změna: 08. 10. 2019, 14:20:38 od Petr Krčmář »


Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #1 kdy: 08. 10. 2019, 14:28:30 »
- Potřebujete opravdu JDK (development kit) nebo jen JRE (runtime)?
- Stačí Vám OpenJDK?
- Běží aplikace i na aktuálním JRE?

Práva k aplikaci jsou problém mezi Vámi a programátorem. Právo použít JRE z OpenJDK máte, právo použít nejnovější Oracle JRE máte taky. Starší bych řekl taky, protože tam žádné časové omezení nebývalo.. jen nejsou aktualizace.

Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #2 kdy: 08. 10. 2019, 14:46:00 »
Pořád z toho nejsem moudrej. Máme aplikaci napsanou programátorem v Java 8 JDK před cca 2ma roky. Teď řešíme jestli tuhle aplikaci, kvuli ktere musime Java 8 JDK nainstalovat aby běžela, můžeme vůbec oficiálně používat? A pokud ne, co dělat? Platí se za každou instalaci takové aplikace? Děkuji za stručnou odpověď pokud ji někdo zná ...
Předpokládám, že řešíte licencování Javy a nikoli té aplikace.

Nezáleží na tom, kdy ta aplikace byla napsána. Oracle OpenJDK můžete používat, jak chcete – ale verze 8 už není podporována, nebude dostávat bezpečnostní záplaty. Oracle OpenJDK dostává záplaty jen pro aktuální verzi, v současné době tedy pro verzi 13 – a každý půlrok je potřeba přejít na nejnovější hlavní verzi. Pokud ta vaše aplikace běží i na novějších verzích Javy, je nejlepší přejít na to aktuální verzi 13.

Další možnost je používat jiné buildy OpenJDK – někteří poskytovatelé nabízejí bezpečnostní patche i pro OpenJDK 8. Některé jsou k dispozici i zdarma – osobně věřím nejvíc Amazon Correto, další je třeba AdoptOpenJDK nebo Zulu OpenJDK.

Další možností jsou komerční buildy s dlouhodobou podporou – Oracle java SE, RedHat OpenJDK, IBM poskytuje podporu pro AdoptOpenJDK atd.

Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #3 kdy: 08. 10. 2019, 14:54:59 »
Ano samozrejme, resime licencovani Javy, aplikace je ok :-) Jeste je to trochu specificke protoze se jedna o aplikaci pro RaspberryPi, resp. jeho Raspbian - pouziva se tam i nejake rizeni dalsiho HW pomoci GPIO.

Tedy jestli to chapu dobre, mohl bych pouzit jine buildy OpenJDK. Zkusim pohledat.


Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #4 kdy: 08. 10. 2019, 15:43:07 »
koukněte na https://adoptopenjdk.net/index.html určitě si vyberete. Stefan


Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #5 kdy: 08. 10. 2019, 18:33:52 »
Pořád z toho nejsem moudrej. Máme aplikaci napsanou programátorem v Java 8 JDK před cca 2ma roky. Teď řešíme jestli tuhle aplikaci, kvuli ktere musime Java 8 JDK nainstalovat aby běžela, můžeme vůbec oficiálně používat? A pokud ne, co dělat? Platí se za každou instalaci takové aplikace? Děkuji za stručnou odpověď pokud ji někdo zná ...

Java 8,9,10 můžete naprosto v pohodě používat. JRE i JDK si můžete v klidu stáhnout z Oracle webu. Ovšem Oracle Java 11,12,13,... již ke spuštění vaší aplikace pokud si ji nezaplatíte používat nesmíte. Samozřejmě co oko nevidí, to srdce nebolí. Pokud potřebujete novější Javu 11,12,13 a nechcete platit pak vám nezbývá nic jiného než použít nějakou implementaci OpenJDK ( viz. odkazy od Jirskáka) a nutno u toho dodržovat GPLv2.

Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #6 kdy: 08. 10. 2019, 19:02:15 »
Pořád z toho nejsem moudrej. Máme aplikaci napsanou programátorem v Java 8 JDK před cca 2ma roky. Teď řešíme jestli tuhle aplikaci, kvuli ktere musime Java 8 JDK nainstalovat aby běžela, můžeme vůbec oficiálně používat? A pokud ne, co dělat? Platí se za každou instalaci takové aplikace? Děkuji za stručnou odpověď pokud ji někdo zná ...

Java 8,9,10 můžete naprosto v pohodě používat. JRE i JDK si můžete v klidu stáhnout z Oracle webu. Ovšem Oracle Java 11,12,13,... již ke spuštění vaší aplikace pokud si ji nezaplatíte používat nesmíte. Samozřejmě co oko nevidí, to srdce nebolí. Pokud potřebujete novější Javu 11,12,13 a nechcete platit pak vám nezbývá nic jiného než použít nějakou implementaci OpenJDK ( viz. odkazy od Jirskáka) a nutno u toho dodržovat GPLv2.

Myslím, že tam máte chyby. OpenJDK je release pod GPLv2 s CLASSPATH exception. Takze Vase aplikace nemusí být pod GPL.

Oracle JDK 11 je free prvních 6 měsíců. Je to vlastně OpenJDK s možností prodloužené podpory od Oracle po prvních 6 měsících , kdy je každý release zadarmo.

Oracle JDK 8 do release u201 je podle staré licence, novější updaty jsou jen k nekomerčnímu použití, nebo pro vývoj, nebo si musíte koupit licenci.

V současnosti bych asi zvolil OpenJDK 11, protože je to LTS a bude podporovaná 3 roky. Většina kritických oprav bude v upstreamu.
Adopt OpenJDK kompiluje upstream a prokázal životaschopnost.

Pokud potřebujete podporovat starší aplikaci, tak Oracle JDK 8 update 201 a přemýšlet o přechodu na JDK 11. Nebude to jako dřív, mezi JDK9 a JDK 11 došlo k odstraňování tříd, které mohou využívat Vaše knihovny. Je potřeba upgrade na novější verzi knihovny, která je kompatibilní s JDK 11. Další změnou jsou moduly. Pokud jste používal interní api JDK, tak nemusí už být vidět veřejně.


Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #7 kdy: 08. 10. 2019, 19:11:54 »
Java 8,9,10 můžete naprosto v pohodě používat. JRE i JDK si můžete v klidu stáhnout z Oracle webu. Ovšem Oracle Java 11,12,13,... již ke spuštění vaší aplikace pokud si ji nezaplatíte používat nesmíte.
Nikoli, nezávisí to na verzi, ale na době vydání. Od určitého data platí nová licence pro Java SE od Oracle, takže pod starou licencí můžete používat staré verze Java SE 8 s bezpečnostními chybami, novější opravené verze už jsou k dispozici jen pod novou licencí. Ale to se týká komerčního buildu Oracle Java SE pod komerční licencí. A ani u té není pravda, že se za vše musí platit – pro vývoj a testování je zdarma (osobní použití teď z hlavy nevím, kolem toho byly nějaké zmatky). Java SE je založená na OpenJDK, ale Oracle k tomu přidává svoje nástroje zaměřené zejména na enterprise sféru.

Vedle toho existují buildy založené čistě na OpenJDK, Oracle dělá svoje buildy vždy jen pro aktuální verzi (ty by měly být shodné s OpenJDK částí Java SE). Další dodavatelé, jak jsem psal, dodávají svoje vlastní buildy OpenJDK – tam už mohou být některé patche jiné, než co je v Oracle OpenJDK a Java SE.

nezbývá nic jiného než použít nějakou implementaci OpenJDK
Všechno, co se dnes používá, jsou různé implementace OpenJDK. Rozdíl je jenom v JVM, dneska se reálně používají jen dvě různé – HotSpot (+ GraalVM), což je implementace, která je součástí zdrojáků OpenJDK a je součástí Java SE. Druhá implementace JVM je od IBM, a některé buildy OpenJDK nabízejí tuto JVM jako alternativu k HotSpotu.

nutno u toho dodržovat GPLv2
Což není nijak obtížné, obvykle JDK jenom spouštíte ale nijak neupravujete, takže dodržet GPLv2 s classpath výjimkou je triviální, prostě to normálně používáte.

Re:Java 8 JDK: můžu oficiálně používat dva roky starou aplikaci?
« Odpověď #8 kdy: 08. 10. 2019, 19:16:22 »
V současnosti bych asi zvolil OpenJDK 11, protože je to LTS a bude podporovaná 3 roky. Většina kritických oprav bude v upstreamu.
LTS verze je Oracle JDK 11, Oracle OpenJDK 11 už vydáváno není. Kritické opravy se asi dostávají do upstreamu, ale pokud je chcete, musíte použít ty alternativní buildy OpenJDK (od Amazonu, RedHatu apod.) a nebo Oracle JDK (Java SE). Nebo sám sestavit ze zdrojáků…