Содержание
- 1 Что нового в Java12? Новые функции в Java12:
- 2 Изменение-1) Параллельная выгрузка класса
- 3 Изменить-2) Получить более подробную информацию о сбое JVM
- 4 Изменение-3) Компактное форматирование чисел
- 5 Изменение-4) Улучшения безопасности Java
- 6 Изменение-5) JEP 325: Переключение выражений
- 7 IntelliJ IDEA Результат:
- 8 Изменение-6) API констант JVM
- 9 Удаленные функции из Java12:
- 10 Устаревшие возможности Java12:
На 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?
Изменить-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 со всеми подробностями о сбое 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поколение- включает в себя алгоритмы и параметры для
- защита ключа
- защита сертификата
- MacData
- включает в себя алгоритмы и параметры для
- Новые события безопасности 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, которое вы хотели бы включить сюда.
0.00 (0%) 0 votes











