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.