w ,

Java 14 – opis zmian i wideo-szkolenie

java14

Java 14 wchodzi do nas z 16-nastoma nowymi zmianami. Można je sklasyfikować w dwóch kategoriach. Pierwsza z nich tyczy się optymalizacji JVM. Druga kategoria – znacznie ciekawsza dla programistów, czyli zmiany jakie możemy uświadczyć w kodzie.

W pierwszej części artykułu opisze zmiany dotyczące optymalizacji JVM, natomiast w drugiej części artykułu w postaci wideo-szkolenia pokaże Ci jakie widoczne w kodzie zmiany pojawiły się w Java 14.

Java 14 – nowości

Poniżej lista zmian. Dokładny opis zmian powstał na bazie informacji opisanych w ramach dokumentu OpenJDK 14.

1. NUMA-Aware Memory Allocation for G1 [ JEP 345]

Garbage First (G1) zyskał usprawnienie, przez które znacznie poprawia się wydajność na komputerach wielordzeniowych.

Nowoczesne maszyny z wieloma rdzeniami mają nierównomierny dostęp do pamięci (non-uniform memory access – NUMA), co oznacza, że pamięć nie jest jednakowo oddalona od każdego rdzenia.

Wdrożenie nowego przydziały pamięci pozwoliło na rozwiązanie tego problemu.

2. JFR Event Streaming [JEP 349]

Java 14 zapewnia interfejs API dla DK Flight, który umożliwia stałe monitorowanie procesów aplikacji.

Można rejestrować taki sam zestaw zdarzeń, jak w przypadku transmisji strumieniowej, przy czym możliwy narzut wydajnościowy jest mniejszy niż 1%.

Pakiet jdk.jfr.consumer, zyskał również rozszerzenie o funkcję asynchronicznego subskrybowania zdarzeń.

3. Non-Volatile Mapped Byte Buffers [JEP 352]

Został wprowadzony nowy zestaw klas i rozszerzenie możliwości MappedByteBuffer o dostęp do pamięci nieulotnej (non-volatile memory – NVM). Od teraz MappedByteBuffer może być użyty tylko do odczytu lub zapisu. Dodatkowo klasa ManagementFactory umożliwia uzyskanie listy instancji BufferPoolMXBean przy użyciu metody getPlatformMXBeans().

4. Deprecate the Solaris and SPARC Ports [JEP 362]

Przestarzałe systemy operacyjne – Solaris/SPARC, Solaris/x64 i Linux/SPARC nadal posiadają aktywne porty. W tej wersji JDK zostają one oznaczone jako przestarzałe i w przyszłości będą usunięte.

5. Remove the Concurrent Mark Sweep (CMS) Garbage Collector [JEP 363]

Java 9 oznaczyła Concurrent Mark Sweep jako deprecated. Od tego czasu minęły 2 lata i od bieżącego wydania ten Garbage Collector odchodzi w zapomnienie.

6. ZGC on macOS [JEP 364] + ZGC on Windows [JEP 365]

Pierwotnie bardzo wydajny Garbage Collector ZGC (mający premierę w Java 11), działał jedynie pod kontrolą Linuxa. Od teraz zyskuje on pełne wsparcie na systemach operacyjnych macOS, oraz Windows.

7. Deprecate the ParallelScavenge + SerialOld GC Combination [JEP 366]

Parallel Scavenge i Serial Old to algorytmy wyrzucania bezużytecznych elementów. Wykorzystanie ich kombinacji zostało oznaczone jako deprecated

-XX:+UseParallelGC -XX:-UseParallelOldG

Również wykorzystanie:

-XX:UseParallelOldGC

zostało oflagowane deprecated, ponieważ służy ono do odznaczenia równoległego GC starej generacji.

W rezultacie każde celowe użycie opcji UseParallelOldGC spowoduje wyświetlenie deprecation warning.

8. Remove the Pack200 Tools and API [JEP 367]

Pack200 pozwala na kompresję plików, która istnieje od Java 1.5.

Zostały usunięte narzędzia pack200, unpack200 oraz interfejs API pack200 z pakietu java.util.jar po tym tym jak Java 11 nadała im status deprecated.

9. Foreign-Memory Access API (Incubator) [JEP 370]

Trwają prace, aby począwszy od wersji JDK 14 stopniowo wdrażać API, które umożliwi aplikacjom Java na bezpieczny i wydajny dostęp do pamięci przechowywanej poza stertą Java. Interfejs API dostępu do pamięci obcej wprowadza trzy główne abstrakcje: MemorySegment, MemoryAddress i MemoryLayout.

Prace trwają co sugeruje status Incubator.

Zmiany widoczne w kodzie

Pozostałe zmiany widoczne w kodzie, oraz podsumowanie szkolenia znajdziesz na moim kanale YouTube:

java14

Java 14 – czy warto? Dyskusja z ekspertami

Wraz z ekspertami Just Join IT toczymy dyskusję na temat zmian wprowadzonych w JDK 14, czy warto się nimi zainteresować.

Java 14 - wywiad z ekspertami

A czy Ty przesiadasz się już na Java 14? 🙂

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

decorator wzorzec projektowy

Decorator – prosty sposób na zastąpienie trudnej hierarchii klas

Java 15

JDK 15 – czym zaskoczy programistów Java?