VM.PL

Dlaczego aktualizacja Javy jest koniecznością po marcu 2022 roku?

/ 20.07.2022
Java

Pracujemy z firmami z obszaru niemieckojęzycznego od 2014 roku i widzimy, że wiele z nich niechętnie podchodzi do aktualizacji Javy w szerszym zakresie. Często wynika to z tego, że przedsiębiorcy wychodzą z założenia, że lepsze jest wrogiem dobrego. Jeśli coś działa, to po co to zmieniać.

I choć ta logika zdecydowanie ma zastosowanie w wielu przypadkach biznesowych, ostatnie zmiany w środowisku Javy nie pozostawiają wątpliwości: jeśli system nie zostanie zaktualizowany, użytkownik pozostanie w tyle zarówno pod względem biznesowym, jak i technologicznym.

W tym artykule omówione zostaną wszystkie zmiany, korzyści i nowe funkcje najnowszych wersji Javy, które moim zdaniem zmieniają wiele w tym, jak działają firmy i ich oprogramowanie.

PS. W większości przypadków poniższe zmiany dotyczą porównania Javy 8 i 17, ale nie wszystkie. Niektóre funkcje są dostępne we wcześniejszych wersjach Javy. Mimo to podane przykłady zostaną sprowadzone do tych  najpopularniejszych, starych (J8), oraz najnowszych wersji z LTS (J17) , co ułatwi zrozumienie trendów. 

Koniec wsparcia technicznego

Niektóre wydania Javy są udostępniane w formie LTS (long-term support), które w przypadku Javy 8 zakończyło się w marcu 2022 roku. Oracle nie obejmuje już Javy 8 usługą PremierSupport. Jak oficjalnie poinformowano, „ich wysiłek włożony w  utrzymanie tego rozwiązania będzie prawdopodobnie znacznie mniejszy niż obecnie".

Innymi słowy, Oracle przestaje inwestować w Javę 8 i nie będzie jej rozwijać tak, jak zamierza rozwijać nowe wersje. W efekcie firmy pracujące na starej Javie nie będą miały dostępu do wsparcia technicznego. Z tego względu ich systemy będą rosły wolniej niż konkurencyjne, działające na Javie 17 i nowszych wersjach.

Bezpieczniejsza i bardziej efektywna działalność

Brak wsparcia ze strony Oracle oznacza również brak dostępu do łatek bezpieczeństwa. Każda wersja ma problemy z bezpieczeństwem; im starsza wersja, tym więcej dziur się w niej znajduje. Nie będą one już usuwane przez Oracle.

Firmy, które nie zaktualizują Javy będą bardziej narażone na wyciek danych i inne problemy związane z bezpieczeństwem. Liczba problemów z bezpieczeństwem i wydajnością, które muszą być regularnie obsługiwane, jest ogromna. Wystarczy spojrzeć na tę listę, aby mieć wyobrażenie o skali napraw.

Ponadto dzięki Javie 17 firmy uzyskują dostęp do funkcji, które zwiększają wydajność systemu, a tym samym szybkość pracy wszystkich pracowników. Jedną z fundamentalnych zmian wydajnościowych niedostępnych dla starszych wersji Javy jest nowy, ulepszony G1 i ZGC Garbage Collector.

Garbage Collector to wbudowany program, który automatycznie i na bieżąco zarządza pamięcią systemu. Dzięki niemu  system (aplikacja, program, strona internetowa) jest stale czyszczony ze zbędnych danych,  nie zapełnia się nadmiernie i działa szybko i sprawnie.
via https://kstefanj.github.io/2021/11/24/gc-progress-8-17.html

GC Javy 17 jest szybszy i wydajniejszy od swoich poprzedników na każdym poziomie. Poniżej porównanie latencji (skrócenie przerw w pracy aplikacji) między J8 a J17. GC w Javie 17 redukuje opóźnienia nawet o 60 punktów procentowych szybciej niż w Javie 8.

W praktyce oznacza to, że przy nowszym GC przestój oprogramowania firmy spowodowany jego uruchomieniem będzie krótszy o milisekundy. Może nie wydawać się to ogromnym wynikiem, ale może mieć kluczowe znaczenie w przypadku oprogramowania przetwarzającego dane w czasie rzeczywistym. A im więcej danych się przetwarza, tym większe znaczenie mają milisekundy.

Mniej kodu, mniej problemów

Garbage Collector jest jedną z istotniejszych funkcji Javy 17, ale jest ich znacznie więcej. Wymienię jeszcze trzy inne przykłady, które uważam za bardzo istotne dla prowadzenia działalności.

  • Records (dostępne od J16) – proste nośniki informacji działające pomiędzy różnymi warstwami aplikacji, dzięki którym można znacznie szybciej programować np. DTO.
  • Klasy „sealed” – mechanizm, w przypadku którego programista może wprowadzić ograniczenia w hierarchii typów bez całkowitego blokowania dziedziczenia.
  • Switch Expression – ulepszona wersja instrukcji sterującej switch, która pozwala na natychmiastowe przypisanie „wyniku switch" do zmiennej.

Przekładając na język nietechniczny, wszystkie powyższe funkcje ułatwiają i przyspieszają pracę programistów.  Dzięki nim oprogramowanie firmy będzie miało mniej linii kodu, a sam kod będzie łatwiejszy (i tańszy) do utrzymania.

Zachęcanie nowych deweloperów i utrzymanie już posiadanych

Przedsiębiorcy, którzy prowadzą firmy informatyczne (lub takie, które w dużym stopniu opierają się na jakimś oprogramowaniu), zapewne wiedzą, jak trudno jest zbudować kompletny zespół IT. Rzeczywiście tak jest w przypadku regionu niemieckojęzycznego, dlatego wiele firm z tej części Europy decyduje się na offshoring IT do sąsiednich krajów.

Mimo to, firmy zawsze starają się przyciągnąć najlepszych, którzy zwykle chcą pracować z najlepszym (co często oznacza najnowsze) oprogramowaniem. Pozostanie przy starym systemie, zniechęca nowych ambitnych pracowników żądnych wzrostu i rozwoju.

Kompletowanie zespołu IT jest na ogół trudne, ale w przypadku starego oprogramowania i technologii jest to jeszcze większe wyzwanie. Zasada ta działa również w drugą stronę. Jeśli pozostaniemy przy starym oprogramowaniu, zwiększa się ryzyko odejścia programistów. Widzimy ten trend w firmach naszych niemieckich partnerów. Developerzy często zmieniają pracę, ponieważ nie chcą pracować ze starą Javą, która nie daje im żadnych nowych wyzwań ani pola do popisu.

Jeszcze większe bezpieczeństwo i wydajność

Przejście na nową Javę nie oznacza tylko aktualizacji samego systemu. Zamiast tego zmusza firmę do jednoczesnego aktualizowania bibliotek, czyli plików, które pozwalają deweloperom na wielokrotne korzystanie z tego samego kodu. Biblioteki ułatwiają i skracają pracę przy kodowaniu, ale trzeba je regularnie aktualizować, ponieważ nowe wersje są bezpieczniejsze, wygodniejsze i szybsze.

Stare, nieaktualne biblioteki są obarczone błędami bezpieczeństwa i wydajności. Kiedy aktualizacji podlega Java, aktualizowane są jednocześnie wszystkie biblioteki.

Aktualizacja Javy to ewolucja, a nie rewolucja

Na koniec chcę dodać, że aktualizacja Javy nie jest przejściem na nowy, inny system. Firmy modernizujące Javę nie będą musiały uczyć swoich pracowników nowych umiejętności, szkolić ich czy zatrudniać dedykowanych specjalistów pod kątem Java17. Nowa Java to tak naprawdę stary system, tylko szybszy, bezpieczniejszy i wydajniejszy.

Dopóki stare oprogramowanie działa i ma się dobrze, warto go używać. Warto jednak przejść na najnowszą wersję, gdy skończy się oficjalne wsparcie, a system przestanie być rozwijany.

W przypadku Javy punktem granicznym jest marzec 2022, czyli miesiąc, w którym  kończy się regularne wsparcie. Jeśli ten artykuł jest czytany po tym terminie, a Państwa zespół  nadal pracuje na Javie 8 lub wcześniejszej, chętnie odpowiemy na wszystkie pytania dotyczące aktualizacji.

 

Design, Development, DevOps czy Cloud - jakiego zespołu potrzebujesz, aby przyspieszyć pracę nad swoimi projektami?

Porozmawiaj ze specjalistami, aby porozmawiać o swoich potrzebach.

Jakub Orczyk
Członek zarządu / Dyrektor sprzedaży
VM.PL
Zamów bezpłatną konsultację
Jakub Orczyk

Umówmy się na spotkanie!

Z przyjemnością odwiedzimy Cię w Twoim biurze. Pozwoli nam to osobiście przedyskutować możliwości i korzyści współpracy.

Jeśli chcesz się z nami umówić na spotkanie, zostaw wiadomość. Skontaktujemy się z Tobą w celu ustalenia dogodnego terminu.

* Prosimy wypełnić wszystkie obowiązkowe pola.
Umówmy się na spotkanie!