Java 16 SE что нового

Java SE 16 что нового в новом релизе
Метки: /

В этой статье вы прочитаете что нового в Java SE 16, я уверен многим Java разработчикам будет интересно.

Также если интересуетесь языка Java, то прочитайте статью «Обзор графической Java библиотеки SWT», тоже очень интересная.

После шести месяцев разработки компания Oracle выпустила платформу Java SE 16 (Java Platform, Standard Edition 16), в качестве эталонной реализации которой используется открытый проект OpenJDK.

Она из важнейших особенностей в том, что в Java SE 16 сохранена обратная совместимость с прошлыми выпусками платформы Java, все ранее написанные Java-проекты без изменений будут работоспособны при запуске в новой версии.

Ещё стоит предупредить, то что Java SE 16 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза.

Java SE 16 что нового:

  • Добавлен экспериментальный модуль jdk.incubator.vector с реализацией API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API позволяет явно управлять векторизацией для параллельной обработки данных.
  • В коде JDK и VM HotSpot, написанном на C++, разрешено использовать возможности, появившиеся в спецификации C++14. Ранее допускалось использование стандартов C++98/03.
  • В сборщик мусора ZGC (Z Garbage Collector), работающий в пассивном режиме и насколько это возможно минимизирущий задержки из-за сборки мусора, добавлена возможность параллельной обработки стеков потоков без приостановки выполнения потоков приложения. В ZGC теперь остались только требующие приостановки работы, которые имеют постоянные задержки, обычно не превышающие нескольких сотен микросекунд.
  • В классах SocketChannel, ServerSocketChannel и java.nio.channels добавлена поддержка Unix-сокетов (AF_UNIX).
  • Реализован порт для Linux-дистрибутива Alpine cо стандартной Си-библиотекой musl, который популярен в окружениях для контейнеров, микросервисов, облачных и встраиваемых систем. Предложенный порт в подобных окружениях позволяет выполнять программы на Java как обычные приложения. Кроме того, при помощи jlink можно убрать все неиспользуемые модули и сформировать минимальное окружение, достаточное для выполнения приложения, что позволяет создавать специфичные для конкретных приложений компактные образы.
  • Реализован механизм Elastic Metaspace, оптимизирующий операции выделения и возвращения памяти, занимаемой метаданными классов (metaspace) в JVM HotSpot. Применение Elastic Metaspace снижает фрагментацию памяти, уменьшает накладные расходы в загрузчике классов, а также благотворно влияет на производительность длительно выполняемых серверных приложений за счёт более быстрого возврата операционной системе памяти, занимаемой неиспользуемыми метаданными классов. Для выбора режима высвобождения памяти после выгрузки классов предложена опция -XX:MetaspaceReclaimPolicy=(balanced|aggressive|none).
  • Добавлен порт JDK для систем Windows, работающих на оборудовании с процессорами на базе архитектуры AArch64.
  • Предложен третий предварительный вариант API Foreign-Memory Access, позволяющий Java-приложениям безопасно и эффективно получить доступ к областям памяти, вне кучи Java, манипулируя новыми абстракциями MemorySegment, MemoryAddress и MemoryLayout.
  • Реализован экспериментальный API Foreign Linker, предоставляющий доступ из Java к нативному коду. Вместе с API Foreign-Memory новый программный интерфейс заметно упрощает создание обвязок над обычными разделяемыми библиотеками.
  • Добавлена утилита jpackage, позволяющая создавать пакеты для самодостаточных (self-contained) Java-приложений. Утилита базируется на javapackager из JavaFX и позволяет формировать пакеты в форматах, родных для различных платформ (msi и exe для Windows, pkg и dmg для macOS, deb и rpm для Linux). Пакеты включают все необходимые зависимости.
  • Включена по умолчанию строгая инкапсуляция всех внутренних элементов JDK, за исключением критических API, таких как sun.misc.Unsafe. Значение опции --illegal-access теперь по умолчанию выставлено в «deny» вместо «permit», что приведёт к блокированию попыток обращения из кода к большинству внутренних классов, методов и полей. Для обхода ограничения следует использовать опцию --illegal-access=permit.
  • Стабилизирована реализация сопоставления c образцом в операторе «instanceof», которая позволяет сразу определить локальную переменную для обращения к проверенному значению. Например, можно сразу писать if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..} без явного определения String s = (String) obj.
    Было:

    Теперь можно обойтись без определения Group group = (Group) obj:
  • Стабилизирована реализация ключевого слова record, предоставляющего компактную форму для определения классов, позволяющую обойтись без явного определения различных низкоуровневых методов, таких как equals(), hashCode() и toString(), в случаях, когда данные сохраняются только в полях, поведение работы с которыми не меняется. Когда в классе используются типовые реализации методов equals(), hashCode() и toString(), в нём можно обойтись без их явного определения:

    Данное объявление приведёт к автоматическому добавлению реализаций методов equals(), hashCode() и toString() в дополнение к конструктору и методам, контролирующим изменение данных (getter).
  • Предложен второй предварительный вариант запечатанных (sealed) классов и интерфейсов, которые не могут использоваться другими классами и интерфейсами для наследования, расширения или переопределения реализации. Запечатанные классы также предоставляют более декларативный способ ограничения использования суперкласса, чем модификаторы доступа, основанный на явном перечислении подклассов, разрешённых для расширения.

Вывод:

В этой статье вы прочитали что нового в Java SE 16, думаю всем любителям этого языка программирования было интересно.

Также посмотрите оригинальную информацию об обновление языка, по этой ссылке.

Источник: OpenNet.

Подписываетесь на соц-сети:

Оценка:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд
Количество оценивших: 1
Средняя оценка: 5,00
Загрузка...

Также рекомендую:

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии