Только это, 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на Линукс. - Позволяет указать параметры времени запуска при упаковке.
- Может быть вызван непосредственно из командной строки или через
ToolProviderAPI вызывается программно.
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获取更多资讯