wydanie Javy SE 19

Po sześciu miesiącach prac rozwojowych firma Oracle wydała platformę Java SE 19 (Java Platform, Standard Edition 19), która wykorzystuje projekt open source OpenJDK jako implementację referencyjną. Z wyjątkiem usunięcia niektórych przestarzałych funkcji, Java SE 19 zachowuje kompatybilność wsteczną z poprzednimi wersjami platformy Java — większość wcześniej napisanych projektów Java będzie nadal działać bez modyfikacji, gdy zostaną uruchomione w nowej wersji. Gotowe do zainstalowania wersje Java SE 19 (JDK, JRE i Server JRE) są przygotowane dla systemów Linux (x86_64, AArch64), Windows (x86_64) i macOS (x86_64, AArch64). Opracowana w ramach projektu OpenJDK implementacja referencyjna Java 19 jest w pełni otwarta na licencji GPLv2 z wyjątkami GNU ClassPath, aby umożliwić dynamiczne łączenie z produktami komercyjnymi.

Java SE 19 jest sklasyfikowana jako zwykła wersja wsparcia, z aktualizacjami, które zostaną wydane przed kolejną wersją. Gałąź wsparcia długoterminowego (LTS) powinna być Java SE 17, która będzie otrzymywać aktualizacje do 2029 roku. Przypomnijmy, że począwszy od wydania Java 10, projekt przeszedł na nowy proces rozwoju, co oznacza krótszy cykl tworzenia nowych wydań. Nowa funkcjonalność jest obecnie rozwijana w jednej, stale aktualizowanej gałęzi głównej, która zawiera już dokonane zmiany iz której gałęzie są rozgałęziane co pół roku w celu ustabilizowania nowych wydań.

Nowe funkcje w Javie 19 obejmują:

  • Zaproponowano wstępne wsparcie dla wzorców rekordów, rozszerzając możliwości dopasowywania wzorców Javy 16 o parsowanie wartości klas typu rekord. Na przykład: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
  • Kompilacje systemu Linux zapewniają obsługę architektury RISC-V.
  • Dodano wstępne wsparcie dla API FFM (Foreign Function & Memory), które pozwala organizować interakcję programów Java z zewnętrznym kodem i danymi poprzez wywoływanie funkcji z zewnętrznych bibliotek i dostęp do pamięci poza JVM.
  • Dodano obsługę wątków wirtualnych, które są lekkimi wątkami, które znacznie upraszczają pisanie i utrzymywanie wysokowydajnych aplikacji wielowątkowych.
  • Zaproponowano czwartą wstępną implementację Vector API, która udostępnia funkcje do obliczeń wektorowych, które są wykonywane przy użyciu instrukcji wektorowych procesorów x86_64 i AArch64 i pozwala na jednoczesne wykonywanie operacji na kilku wartościach (SIMD). W przeciwieństwie do możliwości zapewnianych przez kompilator HotSpot JIT do autowektoryzacji operacji skalarnych, nowe API umożliwia jawne sterowanie wektoryzacją dla równoległego przetwarzania danych.
  • Dodano trzecią eksperymentalną implementację dopasowywania wzorców w wyrażeniach switch, która pozwala na stosowanie elastycznych szablonów w etykietach przypadków obejmujących jednocześnie serię wartości, dla których wcześniej stosowano uciążliwe łańcuchy instrukcji if...else. Obiekt o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); sprawa Długi l -> String.format("długi %d", l); przypadek Podwójne d -> String.format("podwójne %f", d); case String s -> String.format("Ciąg znaków %s", s); domyślnie -> o.toString(); };
  • Dodano eksperymentalne API Structured Parallelism, które ułatwia tworzenie aplikacji wielowątkowych, traktując wiele zadań uruchamianych w różnych wątkach jako pojedynczą jednostkę.

Źródło: opennet.ru

Dodaj komentarz