Java 15 z blokami tekstu oraz ukrytymi klasami
W maju pisaliśmy o wydaniu Java Development Kit 15 (JDK 15) – podstawy dla kolejnej stabilnej wersji Java SE. Dzisiaj, twórcy Javy wydali nową wersję swojej technologii. Java 15 jest kolejnym wydaniem bez wsparcia długoterminowego. Oznacza to, że na razie nowa wersja będzie wspierana przez pół roku, do wydania kolejnej stabilnej wersji. Piętnaste wydanie Javy zawiera nowe funkcje, tj. bloki tekstu oraz zmiany w odśmiecaniu.
Bloki tekstu
Przede wszystkim jest to funkcja, która w poprzednich wydaniach była w fazie preview, a twórcy Java 15 domyślnie ją włączyli. Dzięki blokom tekstu programiści mogą tworzyć wieloliniowe literały. Nie ma już konieczności używania do formatowania tekstu znaków ucieczki. Bloki tekstu umieszcza się między znakami cudzysłowów (“”“).
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
Natomiast w ten sposób tekst będzie przechowywany:
<html> <body> <p>Hello, world</p> </body> </html>
Java 15: Garbage Collectory
Fazę testów ukończyły także dwa wieloplatformowe garbage collectory. Pierwszy z nich, ZGC zaprojektowano z myślą o małych opóźnieniach przy odśmiecaniu. Obecnie twórcy liczą na redukcję opóźnień na poziom poniżej 1 ms. Jest to możliwe, dzięki usprawnieniom głównych platform – Windowsa, Linuxa, a także macOS. Drugi z kolei, Shenandoah, stawia na wykonywanie jak największej pracy równolegle. Dzięki temu niezależnie od wielkości sterty osiąga krótkie czasy odśmiecania.
Ukryte klasy
Ukrytą klasą nazywa się klasę, której nie można użyć wprost przez kod bajtowy innej klasy. Jedyną opcją skorzystania z takiej klasy jest użycie refleksji. W założeniu całość mają przeprowadzać frameworki, które tworzą klasy w trakcie wykonania. Ukryte klasy w Java 15 rozszerzają Lookup API o metodę Lookup::defineHiddenClass.
Zapieczętowane klasy w Java 15
Kolejną nowością w dziale klas są także klasy zapieczętowane. Na razie znajdują się w fazie preview. Pozwalają one ograniczyć to, jakie inne klasy czy interfejsy mogą je rozszerzyć. Przede wszystkim celem jest tu większa kontrola programisty nad tym, gdzie ma znajdować się odpowiedzialność za implementację. Ponadto, może on ograniczyć używanie nadklas.
Przykład zapieczętowanych klas
Przykładowo, dodanie słowa kluczowego sealed, a następnie permits ograniczy możliwości rozszerzania klasy Shape do wymienionych niżej (Circle, Rectangle, a także Square). W przedstawionej dokumentacji znajduje się poniższy przykład:
package com.example.geometry; public abstract sealed class Shape permits Circle, Rectangle, Square {...}
Przede wszystkim wymienione w permits klasy powinny znajdować się w tym samym pakiecie lub module.
Kolejne preview – dopasowanie do wzorca oraz rekordy
Dwie funkcje wprowadzone w Java 14 jako preview zostały oznaczone „second preview”. Mowa o rekordach, a także dopasowaniu do wzorca.
Rekordy
Rekordy to skrócona notacja dla klas służących jako niemutowane kontenery danych. W nowej wersji Java 15 rozwinięto jej integrację z innymi koncepcjami języka. Ponadto dodano możliwość tworzenia lokalnych rekordów.
Dopasowanie do wzorca
Przede wszystkim Pattern matching for instanceof w przyszłości ma się stać jednym z centralnych konceptów w języku. W Java 15 ta funkcja nie otrzymała żadnych nowości, przedstawiono ją jako preview, by zebrać więcej informacji zwrotnych.
Źródło: Bulldogjob, Open JDK