Java 16 официально выпущен

Java Spring

Только это, Java 16 выпущен.

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.

参与JDK16处理Issues的组织

关注公众号:Felordcn获取更多资讯

Личный блог: https://felord.cn