Java 16 – co nowego w najnowszym wydaniu?

Java 16 wprowadza dużo poprawek, które jednak nie dotyczą samego języka. Jak zawsze postaram się omówić tylko to, co przyda się programiście w praktyce. A więc po kolei:

1. JEP 389 – Foreign Linker API (Incubator)

Zmiana ta jest odpowiedzią na potrzebę łatwego dostępu do bibliotek napisanych w językach natywnych, takich jak C++. W tym momencie dostępny jest JNI, który nie jest prosty w użyciu. Dzięki nowemu API programowanie z kodem natywnym powinno w przyszłości być znacznie łatwiejsze.

2. JEP 390 – Warnings for Value-Based Classes

Już w Java 9 konstruktory wraperów (np. Integer, Byte) zostały oznaczone jako Deprecated. Oznacza to, że w przyszłości zostaną usunięte. Zmiana odpowiedzialna za to zamieszanie to migracja do tzw. Value-Based Classes. Postanowiono dodać dodatkowe warningi informujące zawczasu o problemach, które mogą przez to wystąpić. Dlatego też przy użyciu konstruktora wrapera dostaniemy compilation warning. Dodatkowo przy próbie synchronizacji na jakiejkolwiek kasie oznaczonej jako @ValueBased (nie tylko wrapery są nią oznaczone) warning też będzie obecny. Zmiana ta nie ma na razie wpływu na wynik kompilacji i działania programów, jednak warto dokształcić się odnośnie tej migracji, bo jest to zmiana potencjalnie niebezpieczna dla starych programów.

2. JEP 392 – Packaging Tool

Długo oczekiwane narzędzia ułatwiające tworzenie uruchamianych paczek w końcu jest gotowe. Po raz pierwszy napisałem o tym w artykule o Java 14. W Java 16 zmiana dostała ostatnie szlify i jest oznaczona jako production-ready.

3. JEP 393 – Foreign-Memory Access API (Third Incubator)

Znowu funkcja, o której po raz pierwszy usłyszeliśmy przy Java 14. Dalej jest w fazie inkubatora.

4. JEP 394 – Pattern Matching for instanceof.

Kolejna rzecz, która była w fazie preview od Java 14. W Java 16 jest już jako funkcjonalność produkcyjna.

5. JEP 395 – Records.

Rekordy to bardzo fajna funkcja, która też wchodziła w preview w Java 14. W Java 16istnieje już jako funkcjonalność produkcyjna.

6. JEP 397 – Sealed Classes (Second Preview).

Sealed classes to nowość przedstawiona w Java 15. W Java 16 nadal jest w fazie preview.

Leave A Comment