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, соответствующих версиям, выпущенным за эти годы, показано на рисунке ниже:
Примечания к выпуску
Согласно плану выпуска, 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» и отправьте «Интервью», чтобы получить последние материалы обзора интервью, которые я собрал.