Nasza strona używa cookies. Dowiedz się więcej o celu ich używania i zmianie ustawień w przeglądarce. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Czy to koniec Javy 8?

Adam Kukołowicz CTO / Bulldogjob
Dowiedz się, kiedy warto zostać przy Javie 8, a kiedy migrować do Javy 11.
Czy to koniec Javy 8?

W eter poszła plotka, że Java 8 od 2019 roku nie będzie już wspierana. Ale nie jest to wcale prawda. Java 8 żyje, ma się dobrze i będzie wspierana jeszcze kilka lat. Jednak pojawienie się Javy 11 (LTS), połączone ze zmianami licencjonowania Javy SE przez Oracle, daje sporo do myślenia i rodzi mętlik w głowie wielu osób.


O co chodzi?

Oracle przestaje dystrybuować Javę SE za darmo, a w zamian daje OpenJDK (czyli open source’ową dystrybucję JDK, która od wersji 11 jest w 100% kompatybilna z płatną wersją), która jednak ma ograniczony support. Np. pojawienie się OpenJDK 11 oznacza de facto zaprzestanie wsparcia dla OpenJDK 8 przez Oracle. Płatna Java SE 8 będzie wspierana aż do 2025.

Pewnie zastanawiasz się, jakie masz opcje? Już nie musisz! Stworzyłem prosty schemat blokowy, uwzględniający najbezpieczniejsze wyjścia z tej dziwnej sytuacji. Poniżej też opiszę je szerzej. Od razu zaznaczam, że nie są to wszystkie możliwości, a jedynie kilka wybranych.


Czy wiesz ile czasu zajmie migracja na Javę 11?

Nie chodzi mi tu o wymyślanie liczby, czy też oszacowanie tego z dokładnością co do godziny. Przede wszystkim, oznacza to dobre zbadanie kodu pod względem potencjalnych niekompatybilności. Bez takiej wiedzy będzie trudno podjąć jakąkolwiek decyzję.

Tak więc, jeżeli nie masz pojęcia, jak bardzo Twój projekt jest niezgodny z nowszą Javą, to warto zgłębić temat. Po takim researchu zyskasz pojęcie, ile taka migracja mogłaby zająć oraz jak dużo to jest pracy. Z najbardziej oczywistych niekompatybilności można wskazać na usunięcie Javy EE z podstawowej wersji Javy, czy wyłączenie dostępu do pewnych wewnętrznych API. Co więcej, w tym momencie bardzo przydaje się narzędzie jdeps, które pokazuje zależności zarówno w Twoim projekcie, jak i zależnościach Twojego projektu. Dzięki temu łatwo zobaczysz, z czym może być problem.


Czy masz czas na przeprowadzenie migracji?

Nie zawsze będzie tak, że masz czas na robienie migracji. Być może gonią terminy, być może migracja nie jest trywialnym problemem w Twojej aplikacji, a nie masz teraz wolnej mocy przerobowej. Tu trzeba kompromisu między chęcią pracy na najnowszych rozwiązaniach a faktycznymi korzyściami z przejścia na nową wersję Javy. Tych drugich może nie być - wbrew pozorom - tak dużo.

Jeżeli masz na to czas i zgrywa się to biznesowo, warto przesiąść się na OpenJDK 11 i dołączyć do nowego cyklu wydawania Javy. O samej migracji nie będę się rozpisywać, bo są w internecie dobre źródła na ten temat. Np. artykuł na blogu CodeFX.


Czy chcesz wsparcia na poziomie enterprise?

Ok, nie wiem, czy ktokolwiek tego faktycznie potrzebuje (jako programista), ale na poziomie dużej organizacji takie programy mają pewne zalety. Na pewno w większości software house’ów, czy w mniejszych projektach, to zupełnie nie ma znaczenia.

Jeżeli natomiast potrzebujesz wsparcia enterprise, to warto skorzystać z subskrypcji Oracle - kosztuje ona 2,50 USD za stanowisko i 25 USD za core na serwerze. Tu sprawa jest o wiele bardziej skomplikowana, bo Oracle ma jakąś tabelę współczynników, która służy do obliczania tej wartości na podstawie wydajności procesora. Poza tym, dla dużych podmiotów firma Larrego Ellisona oferuje spore zniżki. Są też alternatywy. Takie wsparcie oferuje np. IBM czy Red Hat (w sumie od niedawna to też IBM).


A co jeżeli nie możesz pozwolić sobie na migrację i nie chcesz płacić za używanie Javy?

W połowie listopada coraz więcej osób traciło nadzieję na pomyślne dla nich rozwiązanie problemu Javy 8. Duże firmy zadeklarowały co prawda wsparcie dla tej wersji, ale często płatne. Nie wiadomo też było, czy społeczność open source udźwignie ciężar utrzymania JDK. Wątpliwości było coraz więcej, a czasu do zmiany licencji coraz mniej. Aż tu nagle na scenę wpada AWS, cały na biało, i ogłasza Amazon Corretto.

Tak wyglądał AWS, gdy ogłosił Corretto


Corretto to wersja OpenJDK utrzymywana przez Amazona, reklamowana jako zamiennik Javy SE. Ogłoszenie takiego projektu to bardzo ciekawy, ale też mający dużo sensu ruch ze strony AWS.


Dlaczego to był dobry ruch?


Po pierwsze

Nie wyobrażam sobie, żeby wewnętrznie w niektórych obszarach nie używali oni Javy. Dodatkowo, tej Javy - w tym w wersji 8 - może być bardzo dużo, co byłoby potencjalnie bardzo dużym problemem w migracji. To by mogło oznaczać, że AWS musiałby zacząć płacić Oracle za JDK. Utrzymanie własnej wersji JDK mogło być po prostu tańsze przy skali Amazona.


Po drugie

Opublikowanie Corretto, jako open source i deklaracja wsparcia do 2023 roku, to olbrzymi sukces wizerunkowy. Dodatkowo Amazon twierdzi, że będzie przekazywać wszystkie poprawki do OpenJDK, a w przypadku, gdy w OpenJDK coś zostanie inaczej rozwiązane, to przyjmą taką wersję w Corretto. To wszystko po to, by utrzymać jak najlepszą kompatybilność.


To się nazywa upiec dwie pieczenie na jednym ogniu. Oprócz Amazona skorzysta na tym wszystkim społeczność, która dostanie długofalowe wsparcie dla darmowej Javy w wersji 8 - zarówno w postaci Amazon Corretto 8, jak i OpenJDK 8.

Zobacz więcej na Bulldogjob

Masz coś do powiedzenia?

Podziel się tym z 80 tysiącami naszych czytelników

Dowiedz się więcej
Rocket dog