Java 10
Java 10 (oznaczenie techniczne JDK 10) to dziesiąta główna wersja platformy programistycznej Java, wydana przez Oracle Corporation 20 marca 2018. Była pierwszą wersją udostępnianą w modelu cyklu wydawniczym co‑sześcio‑miesięcznym, co oznaczało krótszy czas między kolejnymi major releases w porównaniu z wcześniejszymi wersjami (np. Java 8, Java 9).
Główne cele wersji
Java 10 miała na celu przede wszystkim:
- Usprawnienie JDK pod kątem wydajności i rozmiaru kodu.
- Wprowadzenie udoskonaleń językowych, które zwiększają produktywność programistów.
- Ułatwienie utrzymania i rozwoju platformy dzięki wprowadzeniu systemu modułów z Java 9.
Najważniejsze nowości
1. Inferencja typów zmiennych lokalnych (var)
Jedną z najbardziej przełomowych zmian była możliwość użycia słowa kluczowego var w deklaracjach zmiennych lokalnych. Kompilator automatycznie wywnioskuje typ zmiennej na podstawie przypisania, co upraszcza kod, zwłaszcza w połączeniu z wyrażeniami lambd i Streams API.
var list = new ArrayList<String>(); // typ listy to ArrayList<String>
var sum = 10 + 20; // typ sum to int
Uwaga: var nie może być używany do deklaracji pól klasy ani parametrów metod.
2. Zbiorcze zmiany w Garbage Collector (GC)
Java 10 wprowadziła gromadzenie nieużywanych obiektów z trybem parallel full GC oraz usprawnienia w G1 GC, które przyspieszają pełne czyszczenie pamięci i zmniejszają czas zatrzymań (stop‑the‑world).
3. Wydajność i rozmiar obrazów JDK
Wprowadzono narzędzie jlink, które umożliwia tworzenie obrazów runtime (custom runtime images) zawierających jedynie niezbędne moduły. Dzięki temu aplikacje mogą mieć mniejszy rozmiar i krótszy czas uruchamiania.
4. Zmiany w API
- Nowa metoda
Collection.stream()w java.util.Collection została oznaczona jako domyślna. - Rozszerzony java.nio.file o
Files.mismatch– szybka metoda porównywania plików. - Ulepszenia w java.time – np. metoda
LocalDate.now(Clock).
System modułów
Java 10 kontynuuje wprowadzony w Java 9 system modułów (Project Jigsaw). Dzięki jlink programiści mogą teraz łatwiej definiować własne zestawy modułów, co zwiększa bezpieczeństwo (mniej powierzonych klas), zmniejsza rozmiar dystrybucji i przyspiesza uruchamianie aplikacji.
Zgodność i migracja
Java 10 jest w pełni kompatybilna ze wcześniejszymi wersjami języka, ale migracja z wersji Java 8 wymaga uwzględnienia następujących aspektów:
- Usunięcie przestarzałych metod i klas z java.util (np.
SecurityManagerw niektórych kontekstach). - Weryfikacja użycia
var– niezamierzone może prowadzić do nieczytelnego kodu. - Zapewnienie, że wszystkie zależności są dostępne w postaci modułów lub mogą działać w trybie classpath.
Wsparcie i dalszy rozwój
Jak każda wersja Java, także i Java 10 posiada ograniczony okres wsparcia. Oracle zapewniło publiczne aktualizacje bezpieczeństwa do września 2020 r., po czym zalecane jest przejście do kolejnych wydań LTS (Long‑Term Support), np. Java 11.