JDK15 официально выпущен, предварительный просмотр новых функций!

Java
JDK15 официально выпущен, предварительный просмотр новых функций!

JDK 15 был официально выпущен 15 сентября 2020 года. Основные особенности этого выпуска:

  • JEP 339: Алгоритм цифровой подписи EdDSA
  • JEP 360: классы уплотнения (предварительная версия)
  • JEP 371: скрытые классы
  • JEP 372: Удаление Nashorn JavaScript Engine
  • JEP 373: Повторная реализация устаревшего API DatagramSocket
  • JEP 374: Повторная реализация API DatagramSocket
  • JEP 375: Сопоставление шаблонов экземпляров (вторая предварительная версия)
  • JEP 377: ZGC: масштабируемый сборщик мусора с малой задержкой
  • JEP 378: текстовые блоки
  • JEP 379: Сборщик мусора с малым временем паузы
  • JEP 381: удаление портов Solaris и SPARC
  • JEP 383: API доступа к внешней памяти (вторая встроенная программа)
  • JEP 384: отчеты (второй превью)
  • JEP 385: Удаление устаревшей активации RMI

JEP: JDK Enhancement Proposals, предложения по усовершенствованию JDK, то есть дополнения функций JDK и предложения по улучшению.

Количество JEP, соответствующих версиям, выпущенным за эти годы, показано на рисунке ниже:image.png

Примечания к выпуску

Согласно плану выпуска, JDK 15, выпущенный на этот раз, будет краткосрочной переходной версией и будет поддерживаться (обслуживаться) Oracle только в течение 6 месяцев, до выпуска JDK 16 в марте следующего года, эта версия прекратит обслуживание. Следующая версия Oracle с долгосрочной поддержкой (версия LTS) будет выпущена в сентябре следующего года (Java 17). Версия LTS выпускается каждые 3 года. Последней версией с долгосрочной поддержкой был JDK 11, выпущенный в сентябре 2018 года.

Описание новой функции JDK 15

JDK 15 предоставляет пользователям четырнадцать основных улучшений/изменений, включая модуль инкубатора, три функции предварительного просмотра, две устаревшие функции и две удаленные функции.

1. Алгоритм цифровой подписи EdDSA

Недавно добавлен алгоритм цифровой подписи Эдвардса-Кривой (EdDSA) для реализации зашифрованной подписи. Поддерживается во многих других криптографических библиотеках, таких как OpenSSL и BoringSSL. EdDSA имеет более высокий уровень безопасности и производительности, чем существующие схемы подписи в JDK. Это новая функция.

2. Скрытый класс

Эта функция помогает платформам, которым необходимо генерировать классы во время выполнения. Классы, сгенерированные платформой, должны динамически расширять свое поведение, но хотят ограничить доступ к этим классам. Скрытые классы полезны, потому что они доступны только через отражение, а не из обычного байт-кода. Кроме того, скрытые классы можно загружать независимо от других классов, что может уменьшить объем памяти, занимаемой фреймворком. Это новая функция.

3. Повторно реализовать API DatagramSocket

Повторно реализовать устаревший API DatagramSocket и заменить его более простой и современной реализацией.java.net.DatagramSocketа такжеjava.net.MulticastSocketБазовая реализация API повышает удобство сопровождения и стабильность JDK.

4. Функция ZGC становится положительной

ZGC был интегрирован в JDK 11 JEP 333, и его целью является повышение производительности за счет сокращения времени паузы GC. В JEP 377 компания ZGC перешла от функции предварительного просмотра к функции производства.

5. Исправьте функцию текстового блока

Текстовый блок, предложенный JEP 355 в 2019 году, представляет собой многострочный строковый литерал, который позволяет избежать большинства escape-последовательностей, автоматически форматирует строку предсказуемым образом и при необходимости дает разработчикам контроль над форматированием. В JEP 378 текстовые блоки стали постоянной особенностью языка Java.

6. Алгоритм сборки мусора Shenandoah оказался положительным

Сборка мусора Шенандоа превратилась из экспериментальной функции в серийную. Это алгоритм восстановления, представленный в JDK 12, который сокращает время пауз сборщика мусора, выполняя работу по эвакуации одновременно с выполнением потоков Java. Время паузы Shenandoah не зависит от размера кучи и имеет одинаковое время паузы, независимо от того, составляет ли стек 200 МБ или 200 ГБ.

7. Запечатанный класс (превью)

Язык программирования Java дополнен запечатанными классами и интерфейсами, которые ограничивают использование суперклассов, а запечатанные классы и интерфейсы ограничивают другие классы или интерфейсы, которые могут их наследовать или реализовать.

8. instanceof режим автоматического сопоставления (превью)

Старое написание:

// 先判断类型
if (obj instanceof String) {
    // 然后转换
    String s = (String) obj;
    // 然后才能使用
}

Новое написание:

if (obj instanceof String s) {
    // 如果类型匹配 直接使用
} else {
    // 如果类型不匹配则不能直接使用
}

Это второй предварительный просмотр функции, которую мы уже анонсировали впервые в Java 14.

9. Класс рекордов (превью)

Records Class также является функцией предварительного просмотра, которая появляется во второй раз. Она также появилась один раз в JDK 14. Использование Record может упростить создание константного класса. Код до и после использования сравнивается следующим образом.

Старое написание:

class Point {
    private final int x;
    private final int y;

    Point(int x, int y) { 
        this.x = x;
        this.y = y;
    }

    int x() { return x; }
    int y() { return y; }

    public boolean equals(Object o) { 
        if (!(o instanceof Point)) return false;
        Point other = (Point) o;
        return other.x == x && other.y = y;
    }

    public int hashCode() {
        return Objects.hash(x, y);
    }

    public String toString() { 
        return String.format("Point[x=%d, y=%d]", x, y);
    }
}

Новое написание:

record Point(int x, int y) { }

Другими словами, после использования записи вы можете написать константный класс с одной строкой кода, и этот константный класс также включает такие методы, как конструктор, toString(), equals() и hashCode().

10. API доступа к внешней памяти (предварительная версия)

Цель состоит в том, чтобы представить API, позволяющий Java-программам безопасно и эффективно обращаться к внешней памяти за пределами кучи Java. Это также предварительная функция Java 14.

11. Другие функции

Среди других функций есть некоторые устаревшие и устаревшие функции, такие как удаление движка Nashorn JavaScript, а также удаление портов Solaris и SPARC, а также некоторые устаревшие функции.

Ссылки и благодарности

Код фермера жирного брата:Tickets.WeChat.QQ.com/Yes/Как отправить Slw0 не могу…

Официальный журнал:откройте JDK.Java.net/projects/JD…

Подпишитесь на официальный аккаунт «Сообщество китайского языка Java» и отправьте «Интервью», чтобы получить последние материалы обзора интервью, которые я собрал.