Java 13

Java 13 przegląd nowości

Kolejna, trzynasta wersja Javy ujrzała dzisiaj światło dzienne. Java 13 wprowadza kila małych nowości. Zmiany w samym języku są tylko dwie, a jedna z nich jest modyfikacją już wprowadzonej wcześniej zmiany w Javie 12, za to więcej zmian dotknęło samą platformę JVM.

Switch Expressions (Preview)

To  już kolejna odsłona zmodyfikowanej instrukcji switch. Pierwsza miała miejsce w Javie 12. Pisałem o tym w artykule o Javie 12 (od poprzedniej wersji niewiele się zmieniło). W poprzedniej wersji instrukcja break mogła zwracać wynik, co teraz zastępuje instrukcją yield. Opcja ta jest dostępna ciągle w trybie preview, co znaczy, że aby ją włączyć, potrzebna jest dodatkowa flaga przy uruchomieniu JVM --enable-preview.

Link do: JEP 354

Text Blocks (Preview)

W końcu w Javie pojawią się wielolinijkowe bloki tekstowe. Sporo języków ma od dawna wbudowaną obsługę takich bloków np. Groovy, Python. Ułatwia to pisanie wielolinijkowych testów w kodzie źródłowym.

A w kodzie obecnie wygląda to tak:

String html = "<html>\n" +
              "    <body>\n" +
              "        <p>Hello, world</p>\n" +
              "    </body>\n" +
              "</html>\n";

i w Javie 13:

String html = """
              <html>
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;

Może nie jest to najbardziej przydatna funkcja, ale czasem może się przydać. Ta funkcja też jest dostępna w trybie preview.

Link do: JEP 355

ZGC: Uncommit Unused Memory

Usprawnienie garbage collectora ZGC tak, by zwracał nieużywaną pamięć do systemu operacyjnego. Do tej pory ZGC nie potrafił tego, nawet jeśli pamięć była niewykorzystywana przez długi czas.

Przypomnę jeszcze, że ZGC to taki GC, który ma zapewniać bardzo niskie pauzy przy odśmiecaniu sterty (Heap) bardzo dużych rozmiarów.

Link do: JEP 351

Reimplement the Legacy Socket API

Zmiana miała na celu przeimplementowanie starego api Javy i C, z którego korzystają pakiety java.net.Socketjava.net.ServerSocket tak, by wprowadzić bardziej nowoczesną implementację. Pozwoli to łatwiej zarządzać i debugować nowe api.

Link do: JEP 353

Dynamic CDS Archives

Zmiana ta rozszerza mechanizm CDS (class-data sharing) poprzez generowanie na koniec życia aplikacji archiwum z klasami załadowanymi z aplikacji i bibliotek, które nie znalazły się w podstawowej warstwie archiwum CDS.

Link do: JEP 350

Podsumowanie

Półroczny cykl wydawniczy daje nam wiele małych zmian i optymalizacji. Większość z nich nie jest jakoś super znacząca, ale zebrane razem stanowią dużą wartość dla użytkowników platformy Java. Nową wersję OpenJdk można pobrać tutaj.

 

Źródła:

https://openjdk.java.net/projects/jdk/13/

 

Mateusz Dąbrowski

Cześć jestem Mateusz, zajmuję się programowaniem już ponad 12 lat z czego ponad 8 programuję w Javie. Zapraszam Cię do lektury mojego bloga. Możesz przeczytać więcej o mnie >>TUTAJ<<