Домой Учебники по Java и J2EE Все о Java12 — новые функции, выражение безопасности и выражения коммутатора (примеры)

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

455
0

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

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

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

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

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

Изменение-1) Параллельная выгрузка класса

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

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

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

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

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

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

При возникновении ошибки OOM ( Out of Memory ) или сбоя JVM обычно Java создает файлы дампа со всеми подробностями.

1
XX : HeapDumpPath = / tmp / crunchify / XX : + HeapDumpOnOutOfMemoryError

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

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

1
XX : + ExtensiveErrorReports

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
пакет crunchify. ком . учебные пособия ;
импорт Java . текст. NumberFormat ;
импорт Java . Util. Локаль ;
/ **
* @author Crunchify.com
* Пример формата Java12 Compact Number
*
* /
общественности учебный класс CrunchifyJava12CompactNumber {
общественности статический недействительным главная ( Строка args [ ] ) {
// NumberFormat — это абстрактный базовый класс для всех числовых форматов.
// Этот класс предоставляет интерфейс для форматирования и разбора чисел. NumberFormat также предоставляет методы для определения того, какие локали имеют числовые форматы и каковы их имена.
NumberFormat crunchifyFormat знак равно NumberFormat . getCompactNumberInstance ( Locale . US , NumberFormat . Стиль. КОРОТКО ) ;
// getCompactNumberInstance возвращает формат компактного числа для указанной локали и formatStyle.
строка crunchifyResult знак равно crunchifyFormat . формат ( 100000 ) ;
Система. вне. println ( NumberFormat.Style.SHORT Result: + crunchifyResult ) ;
}
}

Результат:

1
NumberFormat . Стиль. КОРОТКАЯ Результат : 100K

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

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

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

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

Повышенная Switch statement теперь поддерживается в Java12.

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

CrunchifyJava12SwitchExample.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
пакет crunchify. ком . учебные пособия ;
импорт Java . Util. Сканер ;
/ **
* @author Crunchify.com
* Что нового в инструкции Java12 Switch?
*
* /
общественности учебный класс CrunchifyJava12SwitchExample {
общественности статический недействительным main ( Строка [ ] аргументы ) {
Сканер crunchifyObj знак равно новый Сканер ( Систем . В ) ;
журнал ( «Введите название компании из: Google, Facebook, PayPal, eBay, Twitter, LinkedIn, Apple» ) ;
строка Компания знак равно crunchifyObj . nextLine ( ) ;
log ( Выбранная компания: + компания ) ;
// Оператор переключения до Java12
переключатель ( компания ) {
дело Google :
дело «Фейсбук» :
дело «PayPal» :
дело eBay :
дело «Твиттер» :
log ( «Pre-Java12: этот переключатель предназначен для компаний Google, Facebook, PayPal, eBay & Twitter» ) ;
перерыв ;
дело :
дело «Яблоко» :
дело LinkedIn :
log ( «Pre-Java12: этот переключатель предназначен для компаний Apple & LinkedIn» ) ;
перерыв ;
по умолчанию :
log ( «Pre-Java12: К сожалению … Неверная компания» ) ;
}
/ **
* Сценарий L на основе Java 12 -> синтаксическая операция.
* Здесь нет необходимости в перерыве.
* /
переключатель ( компания ) {
дело Google , Facebook , PayPal , eBay , Twitter > log ( «Java12: этот переключатель предназначен для компаний Google, Facebook, PayPal, eBay & Twitter» ) ;
дело Яблоко , LinkedIn > log ( «Java12: этот переключатель предназначен для компаний Apple & LinkedIn» ) ;
дефолт > {
log ( «Java12: Упс … Неверная компания» ) ;
}
}
/ **
* Это выражение переключения
* /
окончательный строка companyName ;
название компании знак равно переключатель ( компания ) {
дело Google , Facebook , PayPal , eBay , Twitter > ( «Выражение Java12: этот переключатель предназначен для компаний Google, Facebook, PayPal, eBay & Twitter» ) ;
дело Яблоко , LinkedIn > ( «Выражение Java12: этот переключатель предназначен для компаний Apple & LinkedIn» ) ;
/ **
* также возможно выполнять переключение без блокировки и разрыва
* /
дефолт > {
перерыв Выражение Java12: К сожалению … Неверная компания ;
}
} ;
log ( companyName ) ;
}
общественности статический недействительным log ( Строка результат ) {
Система. вне. println ( результат ) ;
}
}

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

1
2
3
4
5
6
7
8
Введите название компании от : Google , Facebook , PayPal , eBay , Twitter , LinkedIn , яблоко
щебет
Выбранная компания : щебет
Предварительно Java12 : это переключатель является за компании Google , Facebook , PayPal , eBay & щебет
Java12 : это переключатель является за компании Google , Facebook , PayPal , eBay & щебет
Выражение Java12 : это переключатель является за компании Google , Facebook , PayPal , eBay & щебет

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

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

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

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

Устаревшие возможности Java12:

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

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

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  В Java, как проверить, если Socket активен, соединение активно на конкретном порту? Утилита isSocketAlive ()

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь