Рубрики
Без рубрики

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

Функции Java 12 – Переключение выражений, новые улучшения Shenandoah GC и G1.

Java 12 стала общедоступной 19 марта 2019 года, скачать Java 12 можно здесь или это Архив OpenJDK .

Функции Java 12.

  • 1. JEP 189: Шенандоа: Сборщик Мусора С Низкой Задержкой (Экспериментальный)
  • 2. JEP 230: Набор микрочипов
  • 3. JEP 325: Переключение выражений (Предварительный просмотр)
  • 4. JEP 334: API констант JVM
  • 5. JEP 340: Один Порт AArch64, А Не Два
  • 6. JEP 341: Архивы компакт-дисков по умолчанию
  • 7. JEP 344: Прерываемые смешанные коллекции для G1
  • 8. JEP 346: Быстрое возвращение Неиспользуемой зафиксированной памяти из G1

Функции разработчика Java 12.

Выражение переключения (предварительный просмотр)

1. JEP 189: Шенандоа: Сборщик Мусора С Низкой Задержкой (Экспериментальный)

Шенандоа – это новый сборщик мусора с низкой паузой и одновременным сбором мусора, прочитайте это исследовательская работа ,

Этот GC является экспериментальной функцией, и нам необходимо использовать следующие параметры, чтобы включить новый GC Шенандоа.

-XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC

Тем не менее, как Oracle JDK, так и OpenJDK не содержат этого нового GC Shenandoah , прочитайте это также Не все сборки OpenJDK 12 включают Shenandoah: Вот почему .

C:\Users\mkyong> java -version
java version "12" 2019-03-19
Java(TM) SE Runtime Environment (build 12+33)
Java HotSpot(TM) 64-Bit Server VM (build 12+33, mixed mode, sharing)

C:\Users\mkyong> java -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC
Error occurred during initialization of VM
Option -XX:+UseShenandoahGC not supported

Чтобы попробовать Shenandoah GC, нам нужна другая сборка JDK, например AdoptOpenJDK .

P.S Этот GC Shenandoah стал функцией продукта в Java 15 JEP 379 .

Дальнейшее Чтение

2. JEP 230: Набор микрочипов

Добавлен ряд тестов Java Microbenchmark Harness (JMH) в исходный код JDK, для тех, кто заинтересован в добавлении или изменении самого исходного кода JDK, теперь у них есть способ сравнить производительность.

Примечание Извините, не уверен, как это работает, пожалуйста, прокомментируйте ниже, если вы знаете, как запускать тестовые тесты Jdk.

Дальнейшее Чтение

3. JEP 325: Переключение выражений (Предварительный просмотр)

Этот JEP расширил существующие операторы switch (ничего не возвращает) для поддержки выражений switch (что-то возвращает).

Традиционные операторы переключения, мы можем возвращать значение, присваивая значение переменной:

	private static String getText(int number) {
        String result = "";
        switch (number) {
            case 1, 2:
                result = "one or two";
                break;
            case 3:
                result = "three";
                break;
            case 4, 5, 6:
                result = "four or five or six";
                break;
            default:
                result = "unknown";
                break;
        };
        return result;
    }

В Java 12 мы можем использовать break или прецедентное право -> для возврата значения из переключателя.

	private static String getText(int number) {
        String result = switch (number) {
            case 1, 2:
                break "one or two";
            case 3:
                break "three";
            case 4, 5, 6:
                break "four or five or six";
            default:
                break "unknown";
        };
        return result;
    }

регистр L -> синтаксис.

	private static String getText(int number) {
        return switch (number) {
            case 1, 2 -> "one or two";
            case 3 -> "three";
            case 4, 5, 6 -> "four or five or six";
            default -> "unknown";
        };
    }

Примечание Выражения этого переключателя имеют второй предварительный просмотр в Java 13 (отброшен параметр break в пользу yield ), и выражения этого переключателя стали стандартной функцией в Java 14 .

Дальнейшее Чтение

Чтобы включить функции предварительного просмотра Java 12:

javac --enable-preview --release 12 Example.java
java --enable-preview Example

4. JEP 334: API констант JVM

Новый пакет java.lang.constant , , список новых классов и интерфейсов для моделирования ключевых файлов классов и артефактов среды выполнения, например, пул констант

Дальнейшее Чтение

5. JEP 340: Один Порт AArch64, А Не Два

До Java 12 существует два разных исходных кода или порта для 64-разрядной архитектуры ARM .

  • Oracle – src/точка доступа/процессор/arm
  • Красная Шляпа? – src/точка доступа/процессор/aarch64

Java 12 удалила Oracle src/hotspot/cpu/arm порт и сохранила только один порт src/hotspot/cpu/aarch64 и сделала это aarch64 сборкой по умолчанию для 64-разрядной архитектуры ARM.

Дальнейшее Чтение

6. JEP 341: Архивы компакт-дисков по умолчанию

Совместное использование данных класса (CDS) улучшило время запуска за счет повторного использования существующего файла архива.

До Java 12 нам нужно использовать -Xshare: дамп для создания файла архива CDS для классов JDK. В Java 12 на сервере /bin/есть новый файл classes.jsa / каталог, файл архива компакт-дисков по умолчанию для классов JDK.

Дальнейшее Чтение

7. JEP 344: Прерываемые смешанные коллекции для G1

Этот JEP улучшает производительность сборщика мусора (G1), разделяя проблемный набор сбора на две части – обязательную и необязательную. G1 отменит необязательную часть, если не хватит времени для ее обработки.

Дальнейшее Чтение

8. JEP 346: Быстрое возвращение Неиспользуемой зафиксированной памяти из G1

Этот ДЖИП улучшает производительность сборщика мусора (G1). Если приложение малоактивно или простаивает, G1 периодически запускает параллельный цикл, чтобы определить общее использование кучи Java и вернуть неиспользуемую память кучи Java в операционную систему.

Дальнейшее Чтение

Скачать Исходный Код

$клон git $клон git

$компакт-диск java-12

Рекомендации

Оригинал: “https://mkyong.com/java/what-is-new-in-java-12/”