Nowa Java 19 trafiła na kolejną architekturę – sprawdzamy JEP-y
Przyzwyczajeni jesteśmy już od kilku dobrych lat do cyklu wydawniczego Javy, w nowe OpenJDK prezentowane jest co pół roku. Można jednak odnieść wrażenie, że za sprawą utraty pełnoprawnej wstecznej kompatybilności po wersji 8 zmiany te jak dotąd nie zachęciły wielu zespołów do migracji. Rzecz jasna są liczne wyjątki, niemniej to właśnie Java 8 jest tą, która cieszy się dużym zainteresowaniem i jest szeroko rekomendowana. Czy ma to szansę zmienić opublikowana właśnie Java 19?
Java 19 – co nowego?
Siłą rzeczy przyjęty w świecie open source, jak i coraz częściej poza nim copółroczny interwał publikowania nowych wersji dużego oprogramowania (systemów operacyjnych, ale jak widać takżę Javy) odbija się na mniejszej dynamice zmian pomiędzy kolejnymi wydaniami. Nie inaczej jest i tym razem – do Javy 19 trafiło raptem siedem nowych JEP-ów, czy Java Enhancement Proposal. Przyjrzyjmy się im bliżej.
W wersji poglądowej do JDK trafiło JEP 405, czyli wzorce rekordów. Dzięki temu Java wzbogaciła się o mechanizm dopasowywania wzorców obsługujący bardziej zaawansowane query. Jest to ewolucja zaprezentowanego w Javie 16 JEP 394. Składnia wzorców prezentuje się następująco:
Pattern:
TypePattern
ParenthesizedPattern
RecordPattern
TypePattern:
LocalVariableDeclaration
ParenthesizedPattern:
( Pattern )
RecordPattern:
ReferenceType RecordStructurePattern [ Identifier ]
RecordStructurePattern:
( [ RecordComponentPatternList ] )
RecordComponentPatternList :
Pattern { , Pattern }
Kolejna nowość, tym razem już w wersji stabilnej i faktycznie rozszerzająca jeszcze bardziej interoperacyjność Javy to JEP 422. Jest to nic innego, jak przeportowanie JDK na architekturę procesorów RISC-V. Przeciętnemu deweloperowi sprawa może się wydać błaha, ale jeśli weźmiemy pod uwagę, jak dużym zainteresowaniem wolne RISC-V cieszy się w ośrodkach badawczych czy coraz częściej na rynku enterprise Dalekiego Wschodu i nie tylko, jasnym staje się, że dostarczenie ISA dla Javy to nie ważny krok w rozwoju tego języka.
JEP 422 należy zdecydowanie uznać za kluczową nowość, bowiem podobnie jak pierwsza zmiana, wszystkie pozostałe znajdują się w tej lub innej fazie rozwoju. Tak jest na przykład z JEP 424, które wprowadza nowe API, dzięki któremu javowe programy zyskują interoperacyjność z danymi i kodem pochodzącym spoza maszyny wirtualnej JVM. Warto nadmienić, że zrobiono to ze względną troską o bezpieczeństwo o dostęp do pamięci spoza maszyny wirtualnej. Razem z JEP 426 noszą chwytliwą nazwę kodową Project Panama.
Dostępna również w wersji poglądowej zmiana JEP 425 wprowadza obsługę wirtualnych wątków. Jak już wspomniano, jest to API wprowadzone testowo, ale zapowiada się obiecująco – jednowątkowe aplikacje wykonywane po stronie serwera będą łatwiej skalowalne. Ma to także ułatwić troubleshooting i debugowanie już działających aplikacji z użyciem wielu wątków.
Do Javy 19 trafiło, a jakże, w wersji poglądowej, Vector API (JEP 426, czwarty inkubator), które znacząco zmienić, jak język obsługuje obliczenia wektorowe. JEP 427 odpowiada za wspomniane dopasowywanie wzorców dla wyrażeń switch, zaś ostatnia nowość, JEP 428 (pierwszy inkubator) wprowadza nowe API mające na celu uproszczenie obsługi wielowątkowości.
Java 19 – co ważnego?
Po niezbyt porywającej lekturze zaprezentowanych w Javie 19 nowości jasnym staje się, że kluczowa jest ta jedyna stabilna – Java ekspanduje na architekturę RISC-V. I to może mieć faktyczne przełożenie na pracę zespołów, które dopiero dostarczą na nią swoje aplikacje. Trudno jednak oczekiwać, aby interoperacyjność z tą świetnie zapowiadającą się (od dłuższego czasu) architekturą skłoniła developerów rozwijających starsze aplikacje do masowej migracji.