Wszystko o Java12 — oświadczenie o nowych funkcjach, zabezpieczeniach i wyrażeniu przełącznika (przykłady)

Opublikowany: 2019-04-07

Java 12 - Wszystkie nowe rzeczy - Szczegóły od Crunchify

19th March 2019 ukazała się Java12. Jak wiemy, Java12 była częścią szybkiego wydania, została wydana zaledwie 6 miesięcy po wydaniu Java11.

W tym samouczku omówimy wszystkie zmiany i nowe funkcje dotyczące Java12.

Osobiście przerzuciłem się na Javę12 na cały mój rozwój, ale na cykl produkcyjny jest za wcześnie. Zachowaj ten samouczek w zakładkach, jeśli chcesz przełączyć się na Java12 dla wszystkich swoich projektów produkcyjnych.

Co nowego w Javie12? Nowe funkcje w Javie12:

W Javie12 zmieniło się wiele funkcji wewnętrznych i związanych z przepływem pracy użytkownika. Przyjrzyjmy się, co jest w Javie 12.

Zmiana-1) Równoczesne rozładowywanie klas

Normalny Garbage Collector zwykle rozładowuje nieużywaną zmienną podczas cyklu GC i zwykle zauważamy pewne zatrzymanie/pauzę w procesie lub wzrost mocy procesora w tym czasie. Zwykle nawet tego nie zauważamy.

Z ZGC (Z Garbage Collector) – Java12 obsługuje również równoczesne rozładowywanie klas. Ponieważ dzieje się to podczas normalnego cyklu GC, nie ma żadnej przerwy ani dodatkowego użycia pamięci.

Domyślnie ZGC jest włączone w Java12. Nie musisz nic więcej robić

Jak wyłączyć ZGC?

  • Po prostu uruchom aplikację za pomocą argumentu wiersza poleceń JVM -XX:-ClassUnloading

Zmiana-2) Dowiedz się więcej o awarii JVM

Gdy wystąpi błąd OOM (brak pamięci) lub awaria JVM, zwykle Java tworzy pliki zrzutu ze wszystkimi szczegółami.

Dzięki tym parametrom maszyny JVM pliki zrzutu zostaną utworzone w folderze /tmp/crunchify/ w przypadku błędu OOM.

W Java12 dodano jeszcze jedną opcję:

Zostanie utworzony nowy plik dziennika o nazwie hs_err<pid>.log ze wszystkimi szczegółami dotyczącymi awarii JVM. Jest to bardzo przydatne w środowisku produkcyjnym, jeśli często występują awarie i chcesz więcej debugować.

Domyślnie jest wyłączony, ale możesz włączyć obszerny raport o awariach, dodając powyższy parametr wiersza poleceń JVM.

Zmiana-3) Kompaktowe formatowanie liczb

java.text dodaje obsługę kompaktowego formatu liczb. 100o można wymienić jako 1K , a 100000 można wymienić jako 100K .

Wynik:

Zmiana-4) Ulepszenia bezpieczeństwa Java

security-libs/java.security zmiany:

  • nie zezwalaj i zezwalaj na opcje dla java.security.manager
    • jeśli disallow , to System. setSecurityManager nie może być użyty do ustawienia menedżera bezpieczeństwa.
  • -groupname Opcja dodana do keytool Generowanie pary kluczy
    • użytkownik może określić nazwaną grupę podczas generowania pary kluczy.
  • Dostosowywanie generowania PKCS12 keystore
    • zawiera algorytmy i parametry dla
      • ochrona klucza
      • ochrona certyfikatu
      • MacDane
  • Nowe wydarzenia związane z bezpieczeństwem JFR
    • Co to jest JFR (Java Flight Recorder)
    • Dodano 4 nowe wydarzenia JFR
      • jdk.X509Certyfikat
      • jdk.X509Walidacja
      • jdk.TLSHandshake
      • jdk.SecurityPropertyModyfikacja

Zmiana-5) JEP 325: Przełącz wyrażenia

JEP 325 Switch Expressions — samouczek autorstwa Crunchify

Switch statement jest teraz obsługiwana w Java12.

  • Oparty na Javie 12 case L -> syntax . Tutaj nie ma żadnej przerwy.
  • Korzystanie z wyrażenia przełącznika
    • to jest uproszczona instrukcja przełącznika
    • jeśli etykieta jest dopasowana, wykonywane jest tylko wyrażenie z prawej strony etykiety strzałki.
    • Nie jest potrzebne oświadczenie o przerwaniu.

CrunchifyJava12SwitchExample.java

IntelliJ IDEA Wynik:

Wynik samouczka Java 12 Switch Statement — Crunchify

Zmiana-6) Interfejs API stałych maszyn JVM

java.lang.invoke.constant : Jak zapewne wiesz, klasa Javy ma stałą pulę, która przechowuje wszystkie operandy w czasie wykonywania.

Java12 dodaje API do wywoływania stałych w czasie wykonywania.

Usunięto funkcje z Java12:

Usunięto funkcje z Java12 - Porady Crunchify

Przestarzałe funkcje Java12:

Przestarzałe funkcje Java12 — porady dotyczące Crunchify

Daj mi znać, jeśli masz jakiś przydatny samouczek dotyczący Java12, który chciałbyś tutaj zamieścić.