Kolejne nowości w Javie 14

W styczniu, w artykule Java 14 już na horyzoncie, opisaliśmy kilka najważniejszych zmian, jakie zostaną wprowadzone w Javie 14. Obiecaliśmy wtedy powrót do tematu i właśnie teraz, kilka dni przed pojawieniem się wersji GA, przyjrzymy się kolejnym nowościom.

Java 14 - 17 Marca 2020

  • Narzędzie do pakowania (Packaging tool)

    Funkcjonalność jest udostępniona w ramach inkubatora, więc może zawierać jeszcze błędy, ale mimo wszystko warto zwrócić na nią uwagę. Wreszcie programiści Javy postanowili ułatwić życie swoim użytkownikom i wprowadzili narzędzie przygotowujące aplikację Java w postaci instalowanego pakietu.

    Narzędzie nazywa się jpackage i pakuje aplikację do pakietu dedykowanego konkretnej platformie, w tym:
    • MSI i EXE w systemie Windows
    • DEB i RPM w systemie Linux
    • PKG i DMG na macOS
    Użycie narzędzia nie jest skomplikowane. Wystarczy uruchomić komendę z odpowiednimi parametrami:
    jpackage --name myapp --input lib --main-jar main.jar --main-class myapp.Main
    Narzędzie posiada wiele dodatkowych opcji, które warto przeanalizować, jeśli już dziś zależy nam na testowaniu go w boju. Link do dokumentacji znajduje się na dole strony.

  • Rekordy

    W trakcie pisania kodu zdarzają się fragmenty, które są i oczywiste i często powtarzane (tzw. boilerplate). Pisanie wiele razy tego samego jest uciążliwe, dlatego warto stosować biblioteki takie jak Lombok. Niemniej wadą Lomboka jest to, że dołączamy go do Javy z zewnątrz. Warto byłoby mieć rozwiązanie wbudowane od razu w kod samego języka. Programiści Javy są tego świadomi i przynajmniej częściowo starają się rozwiązać ten problem. Efektem ich działań jest wprowadzenie nowego bytu w postaci rekordu.

    Rekordy na razie są udostępnione tylko w trybie preview, ale już wiadomo, że warto się im przyjrzeć, oczekując ze zniecierpliwieniem wypuszczenia finalnej wersji. Nie jest to co prawda coś, co całkiem zastąpi Lomboka, jednak z pewnością wpłynie na ograniczenie liczby jego adnotacji.

    Od teraz metody takie jak gettery, hashCode, equals i toString mogą być wygenerowane automatycznie. Wystarczy, że deklarując nowy byt, określimy go jako record:
    public record Item (Long id,  String description) {}
    
    Podobnie będzie z przypisaniem parametrów konstruktora do pól w obiekcie (też zostaną wygenerowane).

    Appa Notka. Przypominamy, że jest to funkcjonalność eksperymentalna i aby z niej skorzystać musimy kompilować nasze źródła z opcją --enable-preview. Jeśli używamy Eclipse'a możemy to ustawić wchodząc do menu Window > Preferences > Java > Compiler. Tam zaznaczamy opcję "Enable preview features".
  • JFR - Java Flight Recorder

    JFR zbiera informacje diagnostyczne i profiluje dane aplikacji Java. Obecnie został rozszerzony o funkcję asynchronicznego subskrybowania zdarzeń. Użytkownicy mogą odczytywać dane nagrania bezpośrednio lub przesyłać strumieniowo z repozytorium dysku bez zrzucania pliku nagrania.
    try (var rs = new RecordingStream()) {
        rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1));
        rs.enable("jdk.JavaMonitorEnter").withThreshold(Duration.ofMillis(10));
        rs.onEvent("jdk.CPULoad", event -> {
            System.out.println(event.getFloat("machineTotal"));
        });
        rs.onEvent("jdk.JavaMonitorEnter", event -> {
            System.out.println(event.getClass("monitorClass"));
        });
        rs.start();
    }
    
Przypominamy, że Java 14 uzyska status General Availability już 17 marca. Nie ma w niej zmian na miarę Javy 8 (to zresztą naturalne przy obecnym modelu udostępniania nowych wersji), ale jednak kilka smaczków zostało wprowadzonych. Nam podoba się szczególnie nowy koncept rekordów oraz wyrażenia switch, które wreszcie przestały być funkcjonalnością eksperymentalną (pisaliśmy o tym w styczniu, w pierwszym artykule o Javie 14).
Autor: Jarek Klimas
Data: 10 marca 2020
Labele:Backend, Poziom średniozaawansowany, Java Linki:
https://openjdk.java.net/jeps/343
https://openjdk.java.net/jeps/349
https://openjdk.java.net/jeps/359
Masz swoje przemyślenia na temat artykułu? Podziel się nimi!
Masz pytanie odnośnie zagadnienia omawianego w artykule?
Coś, co napisaliśmy, nie zaspokoiło Twojego głodu wiedzy?
Daj nam znać co myślisz i skomentuj artykuł na facebooku!

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE