Только это, Java 16 выпущен.
Главная особенность
Векторный API (инкубационный)
Улучшает производительность Java в векторных вычислениях ЦП, что поддерживает крупномасштабные тензорные вычисления и улучшает возможности Java в области ИИ.
Включены новые возможности C++
Позволяет использовать новые функции C++14 в исходном коде C++ в JDK.
Миграция с Mercurial на Git
Git теперь стал абсолютным правителем в области управления версиями кода, и теперь Java следует этой тенденции и использует Git для управления исходным кодом.
Мигрировать в Github
Код OpenJDK теперь размещен на GitHub.
Сборщик мусора ZGC
Сборщик мусора для параллельной обработки стека потоков.
Канал сокета домена Unix
Пара сокетов домена UnixServerSocketChannel
иSocketChannel
служба поддержки.
Alpine Linux Port
В архитектурах x64 и AArch64 перенос JDK на Alpine Linux и другие варианты использованияmusl CБиблиотеки дистрибутива Linxu.
Elastic Metaspace
Категория метаданных обработки горячих точек (метапространственно-мерное пространство) была значительно улучшена. Меньшая занимаемая площадь, и теперь восстановленная память в операционной системе может быстро не использоваться.
Windows/AArch64 Port
Порт JDK на платформу Windows/AArch64.
API внешнего компоновщика (инкубация)
Представьте API, который обеспечивает статически типизированный чистый Java-доступ к машинному коду. Этот API идентичен API внешней памяти (JEP 393) Давайте сильно упростим изначальный легко ошибочный процесс привязки к локали.
Warnings for Value-Based Classes
Укажите исходный класс-оболочку как класс, основанный на значении, и объявите его конструктор устаревшим, чтобы удалить его, что вызовет новое предупреждение об устаревании. Предоставляет предупреждение о неправильных попытках синхронизации экземпляра любого класса на основе значений на платформе Java.
Packaging Tool
поставкаjpackage
Инструмент для упаковки автономных приложений Java.
- Поддерживаются собственные форматы упаковки, чтобы обеспечить конечным пользователям естественную установку. Эти форматы включают
msi
иexe
В Windows,pkg
иdmg
на MacOS, а такжеdeb
иrpm
на Линукс. - Позволяет указать параметры времени запуска при упаковке.
- Может быть вызван непосредственно из командной строки или через
ToolProvider
API вызывается программно.
API доступа к иностранным памятью (3-я инкубация)
Представляет API, который позволяет программам Java безопасно и эффективно обращаться к внешней памяти за пределами кучи Java.
Pattern Matching for instanceof
До этого в Java:
// 先判断类型
if (obj instanceof String) {
// 然后转换
String s = (String) obj;
// 然后才能使用
}
В автоматическом режиме:
if (obj instanceof String s) {
// 如果类型匹配 直接使用
} else {
// 如果类型不匹配则不能直接使用
}
Records Class
Наконец, классы Java больше не вонючие. О, я вижу:
public class Range {
private final int min;
private final int max;
public Range(int min, int max) {
this.min = min;
this.max = max;
}
public int getMin() {
return min;
}
public int getMax() {
return max;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Range range = (Range) o;
return min == range.min && max == range.max;
}
@Override
public int hashCode() {
return Objects.hash(min, max);
}
@Override
public String toString() {
return "Range{" +
"min=" + min +
", max=" + max +
'}';
}
}
Теперь это можно упростить до:
public record Range(int min, int max) {}
В предыдущих статьях есть подробности:
Строго инкапсулирует JDK по умолчанию
Улучшение безопасности и ремонтопригодности JDK не имеет ничего общего с обычными разработчиками.
Sealed Classes
Запечатанный класс — это просто класс, измененный с помощью final. Запечатанные классы не могут наследоваться, что предотвращает злонамеренное происхождение.
Кроме того, Oracle выпустила документ, в котором благодарит компании и отдельных лиц, принявших участие в разработке JDK 16.
Oracle благодарит разработчиков, работающих в таких организациях, как ARM, SAP, Red Hat и Tencent, за их выдающийся вклад. Мы также были рады увидеть вклад небольших организаций, таких как Ampere Computing, Bellsoft, DataDog, Microdoc, и независимых разработчиков, которые в совокупности внесли 3% исправлений в Java 16.
Мы в равной степени благодарны многим опытным разработчикам, которые просматривали предлагаемые изменения, ранним пользователям, которые пытались внедрить выпуски раннего доступа и сообщали о проблемах, а также преданным профессионалам, которые предоставили отзывы в списке рассылки OpenJDK.
关注公众号:Felordcn获取更多资讯