Публикация

Что нового в Java 12?

В этом релизе Java 12 не порадовало чем-то вкусным, но есть немало изменений под капотом, которые по традиции мы смотрим и пробуем.

JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector (Experimental)

Реализованный и поддерживаемый RedHat для aarch64 и amd64, сборщик мусора Shenandoah, обеспечивает предсказуемые и короткие паузы сборки мусора независимо от размера кучи. Идея состоит в том, чтобы запускать сборщик мусора одновременно с запущенными потоками Java.

Это экспериментальная функция, поэтому для ее использования требуется -XX:+UnlockExperimentalVMOptions вместе с -XX:+UseShenandoahGC.

JEP 230: Microbenchmark Suite

Добавлен Microbenchmark Suite расширяющий базовый набор микробенчмарков к исходному коду JDK. Это упрощает разработчикам запуск существующих микробенчмарков и создание новых.

JEP 325: Switch Expressions (Preview)

Это нововведение представлено в виде предварительного просмотра и предлагает улучшить использование конструкции switch. В Switch Expressions было внесено два значительных изменения:

  • Добавлена новая конструкция case [..] ->, где case не требующего break выглядит она следующим образом:
switch (number) {
  case 2, 4, 6 -> System.out.println("Парные числа");
  case 1, 3, 5 -> System.out.println("Не праные числа");
  default -> System.out.println("Другие числа");
}
  • Добавлена возможность использовать switch как выражения:
final String resultNumber = switch (number) {
  case 2, 4, 6 -> System.out.println("Парные числа");
  case 1, 3, 5 -> System.out.println("Не праные числа");
  default -> System.out.println("Другие числа");
}

JEP 334: JVM Constants API

В этом JEP представлен новый пакет java.lang.constant. API предоставляет ключевую модель class-file и run-time артефакты, такие как пул констант. Ознакомится со всеми такими классами можно тут.

JEP 340: One AArch64 Port, Not Two

Предоставляются два разных набора исходников, где оба портированы под arm64. Первый поддерживается Oracle на базе arm64 (hotspot/cpu/arm), и а другой на базе aarch64 (hotspot/cpu/aarch64).

JEP 340 удаляет поддержку arm64, а также весь исходных код используемый #ifdefs в hotspot/cpu/arm будет удален, а для 64-битной сборки ARM по умолчанию будет использоваться aarch64.

JEP 341: Default CDS Archives

JEP 341 улучшает процесс сборки JDK для создания архива совместного использования данных классов (CDS) с использованием списка классов по умолчанию на 64-битных платформах. Цель - сократить время запуска. Начиная с Java 12, CDS по умолчанию включен.

Чтобы запустить вашу программу с выключенным CDS:

java -Xshare:off HelloWorld.java

JEP 344: Abortable Mixed Collections for G1

Чтобы соответствовать заданному пользователем времени паузы, этот JEP заставляет сборщик мусора G1 прервать процесс сборки мусора, разделяя набор областей, подлежащих сборке мусора на обязательные и необязательные части, и прерывает сборку мусора необязательной части, если не будет достигнуто заданное время паузы.

JEP 346: Promptly Return Unused Committed Memory from G1

Этот JEP заставляет сборщик мусора G1 возвращать в операционную систему области памяти со сбором мусора после периода низкой активности приложений.

В настоящее время G1 возвращал память в операционную систему только после полного GC (или параллельного цикла), которого он избегает, поэтому, по сути, он, вероятно, вообще не возвращал память, собранную с мусором, в операционную систему.

Опубликовано: 7 апреля 2021 г.Просмотров: 54

Комментарии

Мы не даем слово анониму 😶
Войдите, пожалуйста.

Еще никто не комментировал эту публикацию 🤔