Tradycyjnie, tuż przed premierą wersji GA przedstawiamy co nowego w kolejnej wersji Javy.
Tym razem bierzemy na tapetę wersję 15. Co ciekawe premiera Javy 15 została przewidziana na ...15 września.
Ciekawe czy stanie się to pewnego rodzaju tradycją, że dzień premiery w miesiącu będzie zgodny z numerem wersji, czy też jest to po prostu
zbieg okoliczności. Zobaczymy.
Zatem, co pojawi się w nowej odsłonie Javy?
Java 15 - 15 września 2020
-
Text Blocks
Bloki tekstowe to coś, o czym pisaliśmy już dwukrotnie, za każdym razem licząc, że w kolejnej wersji Javy przestanie to być
funkcjonalność eksperymentalna. Wreszcie doczekaliśmy się. W Javie 15 zostaje udostępniona finalna wersja.
Przypomnijmy, że blok tekstowy to wieloliniowy ciąg znaków, który nie wymaga od nas dodawania znaku końca linii w celu przejścia do kolejnej linii.
Jest to szczególnie przydatne, gdy w naszym pliku java chcemy użyć HTML-a lub SQL-a.
I tak na przykład w przypadku HTML-a, zamiast dotychczasowej konstrukcji,
możemy osiągnąć ten sam rezultat, stosując nowy, dużo czytelniejszy zapis:
W przypadku SQL-a wygląda to analogicznie:
Warto dodać, że rozwiązanie to może być z powodzeniem stosowane również w przypadku XML-i i JSON-ów.
-
Hidden classes
Klasy ukryte to nowy rodzaj klas, który pozwala na ukrycie szczegółów implementacji frameworków.
Klasy przestają być dostępne bezpośrednio w kodzie bajtowym dla innych klas, a także nie można się do nich dostać
poprzez mechanizm refleksji. Klasa ukryta może być zdefiniowana jako członek gniazda kontroli dostępu,
ma ograniczony cykl życia i może zostać w każdej chwili zwolniona (unloaded).
Klasy, które były generowane do tej pory dynamicznie, mogą teraz być zdefiniowane na pewien czas w postaci ukrytej,
co z dużym prawdopodobieństwem poprawi wydajność ich użycia w implementacjach rozwiązań w maszynie wirtualnej Javy.
Przykładem klas, które mogą zyskać na takim rozwiązaniu, są dynamiczne instancje klas powstające na bazie wyrażeń lambda.
-
Sealed classes [preview]
To jest co prawda funkcjonalność poglądowa (preview), ale nie można jej pominąć w tym zestawieniu.
Klasa sealed (lub interfejs!) jest wszędzie widoczna
tak jak klasa publiczna, ale w przeciwieństwie do niej, klasy sealed nie można dowolnie rozszerzać.
Koncepcja klas zapieczętowanych (sealed) składa się z kilku modyfikatorów:
- sealed - powoduje, że klasa lub interfejs są widoczne, tak jakby były publiczne, ale nie można z nich dowolnie dziedziczyć
- permits - pozwala podanym klasom na dziedziczenie mimo użycia sealed dla klasy bazowej
- non-sealed - umożliwia odwrócenie tego, co wprowadził modyfikator sealed (klasa, która może dziedziczyć z klasy sealed, po wprowadzeniu tego modyfikatora, pozwala na dalsze dziedziczenie z siebie bez restrykcji wprowadzonych przez klasę sealed)
-
Records [preview]
Rekordy omawialiśmy już w artykule Kolejne nowości w Javie 14.
Rekordy to nowy rodzaj klasy, której deklaracja składa się z nazwy, nagłówka i treści. Nagłówek zawiera listę składników rekordu, czyli zmiennych tworzących jego stan.
Obecna wersja dostępna jako preview zawiera zmiany oparte na opiniach społeczności dotyczącej poprzedniej wersji.
W powyższym przykładzie wszystkie zmienne, w tym przypadku id i description, będą miały automatycznie dostęp publiczny o takiej samej nazwie i typie zwracanym, jak ta zmienna.
Ostatecznym celem rekordów jest umożliwienie programistom łatwiejszego niż dotychczas tworzenia niezmiennych konstrukcji opartych na danych w języku Java.
Więcej o rekordach napiszemy, gdy staną się rozwiązaniem finalnym.
-
Pattern Matching for instanceof [preview]
Podobnie jak w przypadku rekordów rozwiązanie to jest nadal dostępne jako preview. Natomiast wygląda na to, że ostatnio nie toczyły się nad nim żadne prace, ponieważ
nie wprowadzono tutaj żadnych zmian. Zainteresowanych tym tematem odsyłamy do naszego opisu w artykule Java 14 już na horyzoncie.
Oprócz powyższych nowości/zmian wprowadzono jeszcze kilka innych - mocno zakorzenionych w strukturze maszyny wirtualnej (na przykład kolejne zmiany dotyczące garbage collectora
ZGC).
Pełna lista dostępna jest pod adresem:
https://openjdk.java.net.
Podsumowując temat, można stwierdzić, że w Javie 15 poza blokami tekstowymi i klasami ukrytymi nie pojawia się nic spektakularnego, przynajmniej jeśli chodzi o wersje finalne wprowadzanych rozwiązań.
Tryb
preview udostępnia kilka naprawdę ciekawych rozwiązań, ale na możliwość ich użycia w pełnej krasie przyjdzie nam poczekać jeszcze przynajmniej kilka miesięcy (do marca, a może i dłużej).
Autor: Jarek Klimas
Data: 30 sierpnia 2020
Labele:Backend, Poziom średniozaawansowany, Java
Linki:
https://openjdk.java.net
Masz pytanie odnośnie zagadnienia omawianego w artykule?
Coś, co napisaliśmy, nie zaspokoiło Twojego głodu wiedzy?
Daj nam znać co myślisz i skomentuj artykuł na facebooku!