Pewnie każdy z nas zastanawia się co teraz? Oracle ogłosił, że od stycznia 2019 nie będzie już publikował aktualizacji dla Java SE 8 do użytku komercyjnego. Jedyna możliwość aby dalej mieć wsparcie dla wersji 8 to zakupić subskrypcję od firmy Oracle.
Jednocześnie Oracle informuje, że najnowsza wersja JDK 11 zostaje wydana na całkowicie nowej licencji. Licencja ta nie zezwala na używanie Javy do jakiegokolwiek użytku komercyjnego takiego jak procesowanie danych, używanie w systemach produkcyjnych czy do innych aplikacji biznesowych używanych wewnątrz firmy. Oracle zezwala jedynie na development, testowanie, prototypowanie i używanie Javy 11 w celach demonstracyjnych. Do używania JDK 11 w celach komercyjnych potrzebujemy zatem subskrypcji.
Przyszłość Javy
Większość z nas zadaje sobie pytanie co teraz zrobić? Skoro nie będzie poprawek bezpieczeństwa oraz poprawek krytycznych bugów czy powinniśmy jak najszybciej aktualizować się do najnowszego JDK?
Jeśli tak to skoro najnowsza wersja Javy wymaga płatnej subskrypcji to czy powinniśmy migrować na OpenJDK która jest opensource?
Ostatnie 32 bity
Co ciekawe i może się wydawać zaskakujące, to fakt, że JDK 8 to ostatnia Java, która jest wydawana w wersji 32 bitowej. Java 9 i 10 jest już tyko 64 bitowa, JDK 11 też nie ma w wersji 32 bity.
Co tak na prawdę się zmienia?
Do tej pory od Oracle otrzymywaliśmy wszystko co niezbędne i to za darmo. Cały ekosystem JVM umożliwiający niemalże stworzenie każdego rodzaju oprogramowania w każdej instytucji. Nowa wersja Javy pojawiała się średnio co 2-3 lata. Przez co nowe funkcjonalności były dobrze przetestowane i ich wprowadzenie było uzasadnione. Często nawet dużo wcześniej te same funkcjonalności były już dostępne pod szyldem innych bibliotek stworzonych przez community. Zapewnienie wstecznej kompatybilności jako jeden z głównych filarów każdej nowej wersji Javy. Poprawki bezpieczeństwa wydawane często i aż do pojawienia się nowej wersji (w przypadku płatnego supportu nawet dłużej).
Przez to wszystko Java była:
- stabilna
- bezpieczna
- darmowa
Po zmianach cyklu wydawniczego od Oracle będziemy musieli zdecydować się na pewne kompromisy.
- Jeśli wybierzemy płatne Oracle JDK – tracimy atut Javy jakim była darmowość.
- Jeśli wybierzemy Open JDK i będziemy się aktualizować co pół roku do nowszej wersji – tracimy jeszcze ważniejszy atut jakim jest stabilność. (Już teraz widzimy jak duże bug-i pojawiły się w wersjach Java 9/10)
- Jeśli wybierzemy Open JDK i będziemy się aktualizować co trzy lata do wersji LTS – to niestety poprawki bezpieczeństwa będziemy otrzymywać od Oracle tylko przez pierwsze 6 miesięcy – czyli tracimy bezpieczeństwo.
Alternatywne JVMs
Warto zauważyć, że Oracle JVM to nie jedyna maszyna wirtualna. Jest wiele innych maszyn dla języka Java. W większości projektów oczywiście spotkamy tą najbardziej popularną: HotSpot JVM.
Inne maszyny wirtualne mogą charakteryzować się różnicami w wydajności oraz być dedykowane do różnych zadań specjalnych czy też posiadać dodatkowe funkcjonalności.
Inne JDK:
- OpenJDK
- W pełni darmowa wersja Javy od Oracle
- Azul Zulu
- JDK od firmy Azul płatne z pełnym wsparciem. Azul w swojej roadmapie deklaruje plany na wsparcie Javy aż do wersji 19.
- AdoptOpenJDK
- W pełni darmowy build na tej samej licencji co OpenJDK, jednak w przeciwieństwie do OpenJDK build będzie dostępny przez 4 lata od daty wydania. W przypadku OpenJDK jest to tylko 6 miesięcy.
- SapMachine
- fork OpenJDK od firmy SAP
- Azul Zing
- Płatna JVM
Opcje
Raczej żadna firma nie chciałaby zostać posądzona o przypadkowe piractwo z powodu niedoczytania, że Java już nie jest za free. Jazda na starej wersji 8 też może być ryzykowna. Brak poprawek przez pewien czas jakoś można przetrwać. Jednak do czasu. W końcu i tak trzeba podjąć decyzję co dalej.
Wykupienie supportu dla JDK8 i/lub JDK11
Wystarczy wykupić subskrypcję od Oracle i mamy zapewnione wsparcie dla wersji 8 aż do 2025 roku, natomiast JDK 11 co najmniej do 2026 roku.
Proste? Proste.
Ile kosztuje użycie Oracle JDK?
Koszt używania Javy z wykupioną subskrypcją podzielony jest na dwie kategorie:
- Java SE wersja Desktop:
- $ 2.5 miesięcznie na jednego użytkownika
- Java SE wersja Serwer/Cloud:
- $ 25 miesięcznie za jeden procesor
Co jeśli nie lubimy Oracle lub Oracle nie lubi nas?
Jest wiele innych firm, które sprzedają wsparcie dla JDK takie jak Azul, IBM, Red Hat.
Przesiadka na OpenJDK
Jeśli chcemy dalej korzystać z darmowego JDK to jak najbardziej jest to możliwe. Oracle dalej będzie udostępniał darmową wersję Javy w wersji open-source z tym, że cykl wydawania Open JDK będzie inny niż dla Oracle JDK.
- OpenJDK – częste wydania, co 6 miesięcy, krótki support
- OracleJDK – nowe wydanie co 3 lata, długi support
OpenJDK jest w pełni open-source na licencji GPL z Classpath Extension. To oznacza, że firmy mogą jej używać do tworzenia aplikacji produkcyjnych.
Classpath Exception – używając kodu open-source na licencji GNU z classpath exception i wydając swoją aplikację, która korzysta z tego kodu, nie musimy udostępniać na warunkach licencji GNU i udostępniać całego kodu źródłowego.
OracleJDK vs OpenJDK
Warto dodać, że od wersji 11 Oracle JDK jest budowane na podstawie Open JDK, więc techniczne nie ma pomiędzy tymi wersjami różnic. Jednak Oracle JDK jest lepsze pod względem wydajnościowym jak również bardziej skoncentrowane na stabilność przez co dedykowane do wykorzystania komercyjnego.
Własny build JDK
Na podstawie OpenJDK wydawanym przez Oracle możemy zbudować swoją własną wersję JDK. Aby jednak potwierdzić, że build jest poprawny i zweryfikowany trzeba przejść proces certyfikacji.
JCK – Java Compatibility Kit
TCK – Technology Compatibility Kit dla Java SE
Jeśli jakaś organizacja lub firma chce wydawać swój własny build JDK i chce aby był określany kompatybilnym z Java SE to musi przejść proces certyfikacji. Należy wtedy uzyskać dostęp do JCK (TCK) i przejść proces certyfikacji dla build-u opartego na OpenJDK.
Podsumowanie
Oracle zmienił treść licencji od wersji 11. Jeśli ktoś nie będzie sobie
z tego zdawał sprawy, nie przeczyta licencji i jak do tej pory będzie aktualizował JDK, to niestety wpadnie w pułapkę. Wykorzystanie Oracle JDK do aplikacji produkcyjnych bez wykupienia subskrypcji jest nielegalne. Dlatego ktoś kto o tym nie wie może się bardzo zdziwić, jeśli zostanie oskarżony o nielegalne wykorzystanie oprogramowania.
Jednocześnie mamy do wyboru dość sporo alternatywnych JDK, które możemy stosować całkowicie za darmo.
Jeszcze jest https://aws.amazon.com/corretto/