Nowości w Java 18

Java 18 jest już oficjalnie dostępna wraz z 9-oma nowymi features. Zaliczają się do nich kolejno:

  1. UTF-8 by Default,
  2. Simple Web Server,
  3. Code Snippets in Java API Documentation,
  4. Vector API (Third Incubator),
  5. Foreign Function & Memory API (Second Incubator),
  6. Deprecate Finalization for Removal,
  7. Reimplement Core Reflection with Method Handles,
  8. Internet-Address Resolution SPI,
  9. 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ą:

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 🙂

 

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *