Nowe funkcjonalności w Java 15

Zgodnie z szybkim cyklem wydawania nowych wersji javy, najwyższy czas na wersję 15. Wersja ta zawiera jedną nową funkcjonalność, o której trzeba wiedzieć

1. JEP 360 – Sealed classes.

Sealed classes są to klasy lub interfejsy, które mogą określić jakie podklasy mogą je rozszerzać. Na pierwszy rzut oka wygląda to bardzo dziwnie. Zerknijmy jak to wygląda:

public abstract sealed class Car permits SportCar, Truck, Bus {
    public abstract void startEngine();
}

Na powyższym przykładzie widzimy jak wygląda deklaracja sealed class. Klasa Car może być rozszerzana tylko przez trzy wymienione klasy. Powoduje to, że z perspektywy wszystkich innych klas, Car zachowuje się tak samo jak klasa finalna.

Zmiana ta pozwala na tworzenie sztywnych hierarchii. Moim zdaniem ta funkcjonalność może przydać się w niektórych miejscach, ale z pewnością nie jest żadną rewolucyjną zmianą. Dobrym przykładem są hierarchie, które z pewnością nie powinny być rozszerzane i taki jest zamiar piszącego. Wcześniej by to to osiągnąć musieliśmy używać klas finalnych, co uniemożliwiało jakiekolwiek dziedziczenie.

Jest to zmiana eksperymentalna, musimy ustawić opcję –enable-preview przy kompilowaniu klas, by z niej skorzystać.

2. JEP 375 – Pattern Matching for instanceof, JEP 378 – Text Blocks, JEP 383 – Foreign-Memory Access API, JEP 384 – Records

Wszystkie powyższe funkcjonalności pozostają w dalej fazie preview. Dokładnie pisałem o nich w poście o Java 14.

Wersja 15 zawiera dużo zmian w implementacji wewnętrznych bibliotek, nowy garbage collector i klasy ukryte przydane przy tworzeniu frameworków. Żadna z tych zmian nie jest czymś, co będzie przydatne w praktycznym programowaniu, dlatego też świadomie je pomijam. Zaprasza do lektury pełnej listy zmian na stronie jdk15.

Leave A Comment