TeamQuest Blog

Java 17 nadciąga ze wsparciem długoterminowym

Java 17 nadciąga ze wsparciem długoterminowym

Marcin Sarna , 15.09.2021 r.

Co nowego przynosi i czy prawdą jest, że ucieka z maszyn deweloperskich na widok Kotlina?

Na początek suchar: co ma wspólnego Java i kefir? Datę przydatności

14 września 2021 roku wydano JDK (Java Development Kit) i jest to pierwsze wydanie z długoterminowym wsparciem od czasu JDK 11 sprzed trzech lat.

Nowa wersja Javy pojawia się co sześć miesięcy, w marcu i wrześniu. Zgodnie z cyklem życia wsparcia Oracle Java SE, są one wspierane tylko przez sześć miesięcy (tj. aż do pojawienia się kolejnej), podczas gdy wydania LTS są wspierane aż przez osiem lat. Java 8 (ostatnia przed gruntowną przebudową JDK w Javie 9 z wieloma przełomowymi zmianami) ma przedłużone wsparcie do grudnia 2030 roku, natomiast przedłużone wsparcie dla Javy 11 trwa do września 2026 roku.

Dostawcy darmowych edycji OpenJDK Javy generalnie pokrywają się z tymi datami wsparcia, a czasem nawet je przekraczają, ale dobry programista Java pamięta, że tylko edycje LTS są przeznaczone do długotrwałego użytku.

Co nowego w Javie 17

Lista nowości nie jest specjalnie długa. Dużą sprawą są typy zapieczętowane (sealed classes), które po raz pierwszy zostały pokazane w Javie 15. Klasy te ograniczają typy, które mogą po nich dziedziczyć. W Javie taka klasa zapieczętowana posiada klauzulę permits, która określa dozwolone podklasy, jak np:

public abstract sealed class Car
permits Hatchback, Sedan, SUV { ... }

Ulepszone zostało natywne wsparcie dla macOS, włączając w to nowy potok renderujący dla Java 2D używający macOS Metal, mamy też teraz port do AArch64 (Apple Silicon).

Nowy generator liczb losowych oferuje ulepszone algorytmy randomizacji, chociaż funkcja ta ma również na celu starannie zachować istniejące zachowanie klasy java.util.Random. Silna enkapsulacja wnętrz JDK jest kolejną nową cechą, mającą zamknąć stosunkowo łatwy do tej pory sposób na ominięcie blokady dostępu do wewnętrznych API. Powszechnie używany sun.mic.Unsafe pozostaje dostępny ze względu na kompatybilność.

Co z(a)nika?

Niektóre rzeczy zostały usunięte; na szczycie tej listy znajduje się Applet API. Simon Ritter z Azul Systems nie patyczkuje się w ocenie tego posunięcia:

Aplety naprawdę są na wylocie. Wtyczka do przeglądarki została usunięta w JDK 11 i zdecydowano się też na pozbycie się API apletów. Teraz mają status deprecated a w JDK 18 prawdopodobnie znikną całkowicie.

Usunięto również eksperymentalny kompilator Java ahead-of-time (AOT), przy czym w dokumentacji napisano, że kompilator ten był mało używany od czasu jego wprowadzenia, a wysiłek wymagany do jego utrzymania jest znaczny oraz, że funkcje te nie były zawarte w buildach JDK 16 opublikowanych przez Oracle i nikt się na to nie skarżył.

Kompilator HotSpot Just-in-time nadal istnieje, a ci, którzy chcą korzystać z kompilacji AOT zostali skierowani w stronę Graala.

Java

Migracja

Wielu programistów wciąż pracuje na ósemce – stwierdziła Trisha Gee, członek komitetu wykonawczego JCP (Java Community Process) i główny rzecznik programistów w JetBrains.
Przejście z 8 na 11 wyglądało trochę strasznie, głównie z powodu sposobu, w jaki JVM została zrestrukturyzowana. Kiedy spojrzysz na różnicę w zakresie funkcji językowych z 8 na 11, cóż, dostaliśmy var i tak naprawdę niewiele więcej. Jest kilka miłych rzeczy w 9, 10 i 11, ale nic naprawdę zniewalającego. Pomiędzy 11 a 17 jest bardziej interesująco. Teraz, gdy wyszła 17-tka, masz wszystkie te piękne cechy języka, które pojawiały się od 11, takie jak zapieczętowane klasy czy dopasowywanie wzorców.

Jak trudna jest migracja do Javy 17? Dalia Abo Sheasha, Java Developer Advocate w JetBrains jest zdania, że przejście z 8 na 11 było większym problemem niż przejście z 11 na 17. A czy było coś spornego w Javie 17 lub innych ostatnich wydaniach na forum komitetu JCP? Zdaniem wspomnianej Gee proces wydawania Javy co sześć miesięcy przebiega bezproblemowo.

Java a Kotlin

Czy Java zostaje w tyle za Kotlinem, opracowanym przez JetBrains i przyjętym przez Google dla Androida? Programiści Javy widzą w Kotlinie rzeczy, które chcieliby mieć w Javie, a krytycy Kotlina mówią, że byłoby miło, gdyby JVM lub Java coś wspierały. To napięcie Gee ocenia jako „pozytywne” i podkreśla, że historia kompatybilności wstecznej zawsze była najważniejszą rzeczą z punktu widzenia Oracle.

Jednym z największych wyzwań deweloperów JDK jest to, że, z pewnością byłoby miło dodać wiele funkcji do Javy, ale musi to być robione w bardzo kontrolowany sposób, aby upewnić się, że kompatybilność wsteczna nie zostanie radykalnie naruszona.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej