Java 18 jest już oficjalnie dostępna wraz z 9-oma nowymi features. Zaliczają się do nich kolejno:
- UTF-8 by Default,
- Simple Web Server,
- Code Snippets in Java API Documentation,
- Vector API (Third Incubator),
- Foreign Function & Memory API (Second Incubator),
- Deprecate Finalization for Removal,
- Reimplement Core Reflection with Method Handles,
- Internet-Address Resolution SPI,
- Pattern Matching for switch (Second Preview).
Dla przypomnienia Java 18 jest wspierana tylko przez 6 m-cy. W artykule zajmę się przybliżeniem niektórych z nich. Całość informacji można zaś znaleźć na stronie Java 18 Open JDK.
1. UTF-8 by Default
UTF-8 domyślny dla standardowego API Java. Zwolennicy zmiany spodziewają się że nie będzie to miało wpływu na aplikacje w takich środowiskach jak MacOS również dla wielu dystrybucji Linuxa i wielu aplikacji serwerowych które obsługują już UTF-8.
Jednak wiąże się to z ryzykiem na środowiskach gdzie domyślny zestaw znaków nie został określony. Spodziewa się również że będzie mieć to wpływ na użytkowników systemu Windows, którzy znajdują się w azjatyckich lokalizacjach i niektórych środowiskach serwerowych w azjatyckich i innych lokalizacjach.
2. Simple Web Server
Pozwala na uruchomienie narzędzia wiersza poleceń, który pozwala uruchomić minimalny serwer internetowy. Narzędzie to jest udostępnione z myślą o edukacji. Będzie więc można to wykorzystać do testowania, pisania kodu ad-hoc czy prototypownia.
3. Code Snippets in Java API Documentation.
Czyli wprowadzenie znacznika @Snipt dla Doclet Javadoc, aby uprościć włączenie przykładowego kodu źródłowego w dokumentacji API. Ze względu na to że autorzy dokumentacji często zawierają fragmenty kodu źródłowego, postanowiono dodać nowoczesną stylizacje m.in: podświetlanie składni, automatyczne łączenie nazw do deklaracji.
4. Vector API (Third Incubator).
Wcześniej rozwijany w Javie 16 i 17. Ma to na celu ulepszenie wydajności oraz znaczące ulepszenia implementacji. Zmiany dotyczą:
- wsparcia dla ARM Scalar Vector Extension (SVE) platform,
- poprawa wydajności operacji wektorowych, które akceptują maski na architekturach, które obsługują maskowanie w sprzęcie.
Operacje wektorowe wyrażają stopień równoległości umożliwiający większą pracę do wykonania na jednym cyklu procesora, tworząc w ten sposób znaczne ulepszenia wydajności.
5. Foreign Function & Memory API (Second Incubator).
Programy Java współpracują z kodem i danymi poza Java Runtime. Pozwala to otrzymać bezpieczny dostęp do foreign functions poza JVM i foreign memory. Feature ten był rozwijany w Javie 17 – natomiast w Javie 18 jest on udoskonalony m.in.:
- o nowy interfejs API do kopiowania tablic Java: do i z pamięć,
- prostsze Api do zarządzania zależnościami pomiędzy zakresami zasobów.
6. Deprecate finalization for removal.
Finalization ze względu na problemy z bezpieczeństwem czy wydajnością przeznaczona jest do wycofania. Obecnie ta opcja jest domyślnie włączona. Jednak zostanie ona wyłączona w kolejnej odsłonie Javy i całkowicie usunięta w późniejszych wydaniach. Dlatego już teraz zaleca się migrację do innych technik zarządzania zasobami jak np.: try-with-resourses lub cleaners.
7. Podsumowanie
Release Javy 18 odbył się 22 -ego marca 2022. I będzie ona wspierana do września, kiedy to ma ma nastąpić kolejny release. Zapraszam do podzielenia się w komentarzu na temat nowinek ze świata Javy 🙂