JavaRush /Blog Java /Random-PL /Java 12 jest już dostępna: co nowego?

Java 12 jest już dostępna: co nowego?

Opublikowano w grupie Random-PL
Tak więc Java pojawiła się na miejscu 12. I choć nie jest to wydanie LTS (to znaczy nie jest to wydanie długoterminowe, nie jest to wydanie, które będzie wspierane przez długi czas. Wersja 11 jest uważana za pierwsze wydanie LTS z ośmioma- roczny okres wsparcia ), pojawiły się w nim ciekawe rzeczy w aktualizacjach. Przyjrzyjmy się najważniejszym z nich. Przypomnijmy, że w Javie propozycje zmian są skracane jako jeps (z JDK Enhancement Proposal). Java 12 jest już dostępna: co nowego?  - 1

Najciekawszy Jep JDK 12

189: Shenandoah: moduł zbierający śmieci o krótkim czasie pauzy (eksperymentalny) Narzędzie Garbage Collector, Shenandoah, wykorzystuje nowy algorytm, który skraca czas działania poprzez jednoczesne czyszczenie z uruchomionymi wątkami Java. W tym przypadku czas pauzy w Shenandoah będzie taki sam niezależnie od wielkości sterty. Z jakiegoś powodu Oracle nie uwzględniło Sheandoah w swoich „oficjalnych” wersjach wersji, pomimo faktu, że programiści uważają tę funkcję za jedną z najważniejszych w nowej wersji. Jeśli więc planujesz wypróbować zaawansowany moduł Garbage Collector, musisz skorzystać z kompilacji innych firm, takich jak Azul . 230: Microbenchmark Suite Microbenchmark to mikrobenchmark, który mierzy wydajność jakiegoś małego elementu. W Javie są one pisane i uruchamiane przy użyciu frameworku JMH. Od wersji 12 do JDK dodano JMH i już są w nim pisane testy , co ułatwia życie programistom. 325: Wyrażenia przełączające (wersja zapoznawcza) Nowa forma pisania wyrażeń za pomocą instrukcji switch. Strona funkcji zawiera przykładowy kod wykorzystujący tradycyjny przełącznik, gdzie ciągłe używanie break powoduje, że jest on niepotrzebnie gadatliwy, co prowadzi do częstych przypadkowych błędów.
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        System.out.println(6);
        break;
    case TUESDAY:
        System.out.println(7);
        break;
    case THURSDAY:
    case SATURDAY:
        System.out.println(8);
        break;
    case WEDNESDAY:
        System.out.println(9);
        break;
}
Autorzy aktualizacji proponują wprowadzenie nowej formy etykiety przełącznika „case L ->”, aby wyraźnie wskazać, że jeśli ta etykieta będzie odpowiednia, zostanie wykonany tylko kod po prawej stronie etykiety. Zatem powyższy kod można znacznie skrócić, stosując nową składnię:
switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
    case TUESDAY                -> System.out.println(7);
    case THURSDAY, SATURDAY     -> System.out.println(8);
    case WEDNESDAY              -> System.out.println(9);
}
334: API stałych JVM Pula stałych zawiera tak zwane stałe ładowalne. Są to wartości, na przykład typu String lub dowolnego typu pierwotnego, a także artefakty czasu wykonywania, takie jak klasy i metody. Pracując z plikami klas, programiści skorzystają z wygodnych narzędzi do manipulowania ładowalnymi stałymi. Autorzy tego jepa zaczęli rozwiązywać ten problem, wprowadzając nowe typy dowiązań symbolicznych oparte na wartościach, z których każdy będzie opisywał określony typ stałych. Kod innowacji . 340: Jeden port AArch64, a nie dwa Pod tą złożoną nazwą kryje się rozwiązanie problemu, który pojawił się w Javie 9, kiedy w zestawie pojawiły się jednocześnie 64-bitowe porty ARM Oracle i aarch64 firmy Red Hat. Co więcej, już w momencie wydania JDK 11 nawet sama Oracle nie obsługiwała 64-bitowej wersji portów Oracle. Zatem teraz 64-bitowe porty Oracle zostały usunięte, pozostawiając 32-bitowy ARM32 i 64-bitowy, bardziej produktywny, aarch64. 341: Domyślne archiwa CDS Bardzo fajna aktualizacja, która naprawdę przyspiesza uruchamianie aplikacji. Nie jest tajemnicą, że po uruchomieniu aplikacji Java zaczyna się ładować ogromna liczba klas, a jest to dość długi proces. CDS oznacza Class Data Sharing i ta funkcja pozwala spakować wszystkie klasy uruchamiane przy uruchomieniu do specjalnego archiwum udostępniania danych klas, korzystając z domyślnej listy tych samych klas. W rezultacie szybkość uruchamiania aplikacji znacznie wzrasta. 344: Możliwość przerwania zbioru mieszanego dla G1 G1 to moduł zbierający elementy bezużyteczne, który stał się głównym modułem zbierającym elementy bezużyteczne w JDK 9, zastępując Parallel GC. W Javie 10 G1 nauczył się zbierać śmieci w wielu wątkach. Jednak nie wszyscy byli zadowoleni z jego pracy, jednym z głównych problemów były długie przerwy. Teraz można je anulować. G1 na podstawie analizy zachowania programu określa ilość pracy, a następnie zbiera „żywe” obiekty do Zestawu Kolekcji, aż zbierze wszystko, bez zatrzymywania się. Często G1 nie obliczał ilości pracy i pracował zbyt długo. Po zaimplementowaniu jep-344 G1 może przełączyć się na przyrostowe zbieranie śmieci i jeśli wykonanie następnego kroku zajmie więcej czasu, niż jest to uzasadnione, krok ten można przerwać. 346: Natychmiast zwróć nieużywaną zatwierdzoną pamięć z G1 I jeszcze kilka aktualizacji w obozie wspomnianego asemblera G1. Czasami zdarzało się, że było mnóstwo pamięci sterty Java, ale nikt jej nie używał, tej pamięci. W Javie 12 można teraz „zwrócić” nieaktywną pamięć do systemu operacyjnego. Wcześniej bardzo rzadko zdarzało się, żeby G1 rezygnował z pamięci, teraz jednak wszystko zostało uproszczone. Dzięki nowej funkcji aplikacja jest definiowana jako nieaktywna, jeśli upłynął odstęp czasu od ostatniej kompilacji i nie ma równoczesnego cyklu. Inna sytuacja ma miejsce wtedy, gdy monitorowana od jakiegoś czasu funkcja getloadavg() pokazuje obciążenie poniżej ustawionego dopuszczalnego progu. Jeśli wystąpi jedno z dwóch zdarzeń, rozpoczyna się częściowe zbieranie elementów bezużytecznych. Czego nie ma Java 12: Literały surowych ciągów znaków Wielu programistów było zainteresowanych tą funkcją, ale nigdy nie pojawiła się ona w tej wersji. Jej autorzy uznali, że nadal wymaga pracy. Mamy więc nadzieję, że w jednej z kolejnych wersji Javy pojawi się funkcja umożliwiająca wygodną pracę z literałami łańcuchowymi. Obsługa nieprzetworzonych literałów ciągów umożliwia pracę z informacjami w postaci ciągów znaków niezależnie od języka. Eliminuje to potrzebę ekranowania. Szczególnie przydatne w wyrażeniach regularnych, gdzie szeroko stosowane są ukośniki odwrotne, oraz w ścieżce systemu Windows, gdzie ukośniki odwrotne są używane jako ograniczniki. Czyli żeby uniknąć takich konstrukcji: C:\\My\\Test\\Pack\\
Każdy programista często napotyka tę lub inną trudność w swojej pracy. Czasem wiążą się one z brakiem doświadczenia programisty, czasem jednak z niedoskonałością samego narzędzia. Java to wspaniały język, ale daleki od doskonałości. Być może spotkałeś się już z czymś w Javie i wiesz, co chciałbyś zmienić w swoim „narzędziu” (języku)? Podziel się w komentarzach!

wnioski

W Javie 12 nie było rewolucji. Jednak nikt tego nie planował. Szereg innowacji ma jednak na celu optymalizację działania aplikacji i przyspieszenie pracy, co jest dobrą wiadomością. Nawiasem mówiąc, IDEA obsługuje już JDK 12, więc możesz wypróbować jego możliwości. Oczywiście kilka aktualizacji bezpośrednio dotyczy początkujących, chociaż nawet ci, którzy dopiero rozpoczęli naukę JavaRush, mogą pobawić się nowym przełącznikiem (po ustawieniu flagi --enable-preview).
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION