Все о Java12 — Заявление о новых функциях, безопасности и выражении переключения (примеры)

Опубликовано: 2019-04-07

Java 12 — Все новинки — Подробности от Crunchify

19th March 2019 года была выпущена Java12. Как мы знаем, Java12 был частью быстрого выпуска, он был выпущен всего через 6 месяцев после выпуска Java11.

В этом руководстве мы рассмотрим все изменения и новые функции Java12.

Лично я перешел на Java12 для всех своих разработок, но для производственного цикла это слишком рано. Сохраните это руководство в закладках, если захотите переключиться на Java12 для всех своих производственных проектов.

Что нового в Java12? Новые функции в Java12:

В Java12 есть довольно много внутренних и пользовательских функций, связанных с рабочим процессом, которые изменились. Давайте посмотрим, что внутри Java 12.

Изменение-1) Выгрузка параллельного класса

Обычный сборщик мусора обычно выгружает неиспользуемую переменную во время цикла GC, и мы обычно замечаем некоторую остановку/паузу в процессе или увеличение загрузки ЦП в это время. Обычно мы этого даже не замечаем.

С ZGC (Z Garbage Collector) — Java12 также поддерживает одновременную выгрузку классов. Поскольку это происходит во время обычного цикла сборки мусора, нет ни паузы, ни дополнительного использования памяти.

По умолчанию ZGC включен в Java12. Больше никаких действий не требуется

Как отключить ZGC?

  • Просто запустите приложение с аргументом командной строки JVM -XX:-ClassUnloading

Изменение-2) Получить более подробную информацию о сбое JVM

Когда возникает ошибка OOM (недостаточно памяти) или происходит сбой JVM, обычно Java создает файлы дампа со всеми подробностями.

С этими параметрами JVM файлы дампа будут создаваться в папке /tmp/crunchify/ при ошибке OOM.

В Java12 добавлена ​​еще одна опция:

Будет создан новый файл журнала с именем hs_err<pid>.log со всеми подробностями о сбое JVM. Это очень полезно для вашей производственной среды, если вы видите частые сбои и хотите больше отлаживать.

По умолчанию он отключен, но вы можете включить расширенный отчет о сбоях, добавив указанный выше параметр командной строки JVM.

Изменить-3) Компактное форматирование чисел

java.text добавляет поддержку компактного числового формата. 100o может быть упомянуто как 1K , а 100000 может быть упомянуто как 100K .

Результат:

Изменение-4) Улучшения безопасности Java

изменения security-libs/java.security :

  • запретить и разрешить параметры для java.security.manager
    • если disallow , то System. setSecurityManager нельзя использовать для установки менеджера безопасности.
  • Параметр -groupname добавлен в генерацию пары ключей keytool
    • пользователь может указать именованную группу при создании пары ключей.
  • Настройка генерации PKCS12 keystore
    • включает алгоритмы и параметры для
      • защита ключей
      • защита сертификата
      • MacData
  • Новые события безопасности JFR
    • Что такое JFR (Java Flight Recorder)
    • Добавлено 4 новых события JFR
      • jdk.X509Сертификат
      • jdk.X509Проверка
      • jdk.TLSрукопожатие
      • jdk.SecurityPropertyModification

Изменение-5) JEP 325: Переключение выражений

Учебное пособие по JEP 325 Switch Expressions от Crunchify

Оператор Enhanced Switch statement теперь поддерживается в Java12.

  • case L -> syntax операция. Здесь нет необходимости в перерыве.
  • Использование выражения переключения
    • это упрощенный оператор switch
    • если метка совпадает, то выполняется только выражение справа от метки стрелки.
    • Оператор break не требуется.

CrunchifyJava12SwitchExample.java

Результат IntelliJ IDEA:

Результат руководства по оператору Switch Java 12 - Crunchify

Изменение-6) API констант JVM

java.lang.invoke.constant : Как вы, возможно, знаете, класс Java имеет постоянный пул, в котором хранятся все операнды во время выполнения.

Java12 добавляет API для вызова констант во время выполнения.

Удаленные функции из Java12:

Удаленные функции из Java12 — советы Crunchify

Устаревшие функции Java12:

Устаревшие функции из Java12 — советы Crunchify

Дайте мне знать, если у вас есть удобный учебник по Java12, который вы хотели бы включить сюда.