Рубрики
Без рубрики

Каковы новые функции Java 16?

Последняя версия java – Java 16 с открытым исходным кодом (Java SE 16) и Java 16 Development Kit (JDK 16) wa… Помеченный java.

Недавно была выпущена последняя версия java – Java 16 с открытым исходным кодом (Java SE 16) и Java 16 Development Kit (JDK 16). Поскольку это финальная версия Java 16, разработчики могут загрузить ее и попробовать новую версию. В этой статье мы познакомимся с новыми функциями Java 16, представленными в этом выпуске.

Скачать Jdk 16: Скачать Jdk 16:

Дата выхода Jdk 16: 16 марта 2021 года

Основными функциями Java 16, предлагаемыми пользователям в новой версии, являются 17 основных улучшений (известных как предложения по улучшению JEP – JDK). Это также включает в себя 3 модуля инкубатора и 1 функцию предварительного просмотра, а также тысячи изменений производительности, стабильности и безопасности.

Java 16 Особенности

  • JEP 338: Векторный API (инкубатор)
  • JEP 347: Включить функции языка C++ 14
  • JEP 357: Переход с Mercurial на Git
  • JEP 369: Переход на GitHub
  • JEP 376: ZGC: Параллельная обработка стека потоков
  • JEP 380: Каналы сокетов Unix-домена
  • JEP 386: Порт Alpine Linux
  • JEP 387: Эластичное Метапространство
  • JEP 388: Порт Windows/AArch64
  • JEP 389: API внешнего компоновщика
  • JEP 390: Предупреждения для классов, основанных на ценности
  • JEP 392: Упаковочный инструмент
  • JEP 393: API доступа к внешней памяти
  • JEP 394: Сопоставление шаблонов для примера
  • JEP 395: Записи
  • JEEP 396: Инкапсулировать внутренние компоненты JDK по умолчанию
  • JEP 397: Закрытые классы

Какие языковые усовершенствования появляются в виде новых функций Java 16?

Записи Записи были представлены в качестве функции инкубации в Java 14 и 15 в качестве предварительного просмотра, а теперь доработаны, чтобы называться стандартной функцией. Записи

Сопоставление с образцом, например Это также была инкубационная функция в предыдущих выпусках и стала стандартной функцией Java 16 в новой версии. (В прошлом это также было введено в качестве функции предварительного просмотра в Java 14 и снова в Java 15.)

Назначение – эта функция позволяет более надежно выражать общую логику в программе, т.е. теперь условное извлечение компонентов из объектов может быть более кратким и безопасным.

Возможности Java 16 для улучшения JVM Эластичное метапространство Ожидается, что это улучшит использование метапространства (пространства памяти, используемого метаданными класса). Он немедленно возвращает неиспользуемые метаданные виртуальной машины HotSpot в операционную систему, что снижает потребление памяти и повышает эффективность. Это повышает эластичность и производительность приложения, а также приводит к меньшему использованию памяти.

Параллельная обработка потоков ZGC Переместите обработку стека потоков ZGC из безопасных точек в параллельную фазу, чтобы даже при больших кучах эффективно устранялись все паузы и проблемы с масштабируемостью. Это устраняет единственный источник задержки в сборщике мусора ZGC и значительно повышает производительность и эффективность приложений в этой и будущих версиях.

Новые инструменты и библиотеки

Unix-Доменные каналы сокетов Доменные сокеты Unix – это старые функции платформ Unix (в основном!) , Теперь они поддерживаются в Windows Server 2019, а также в Windows 10. Новая функция Java 16 добавляет поддержку сокетов в домене Unix (AF_UNIX) в API-интерфейсы socketchannel и серверных сокетов (часть java.nio.channels).

Упаковочный инструмент Это помогает в упаковке автономных Java-приложений. Он предоставляет способ создания собственных пакетов платформы, таких как deb и rpm в Linux, pkg и dmg в mac OS, а также msi и exe в Windows, чтобы предоставить пользователям естественный опыт установки. Эти форматы включают pkg и dmg в mac OS, exe и msi для Windows и deb/rpm в Linux. Это улучшает работу конечных пользователей при установке приложений и упрощает их развертывание.

Теперь вы можете определить параметры времени запуска во время упаковки, и это можно вызвать напрямую либо из командной строки, либо с помощью программы, использующей API ToolProvider. Эта функция изначально появилась как функция инкубатора в Java 14.

Примечание – Имя модуля jpackage изменилось с jdk.incubator.jpackage на jdk.jpackage

Будущая проверка Вашей Работы

Предупреждение для классов, основанных на значениях Класс-оболочка примитива – java.lang. Двойной, java.язык. Целое число и т. Д.

Класс, основанный на значениях – java.time. LocalDateTime, java.util. Необязательно и т.д.

Эта функция делает классы примитивной оболочки основанными на значениях и добавляет для удаления в конструкторы (устарело с JDK 9). Это приводит к появлению новых предупреждений. Если в Java будет предпринята какая-либо неправильная попытка синхронизации экземпляров классов, основанных на значениях, для них будут предоставлены предупреждения.

Строго инкапсулировать внутренние компоненты JDK по умолчанию Эта функция по умолчанию обеспечивает надежную инкапсуляцию всех внутренних элементов JDK (исключение составляют критические внутренние API, например. солнце.разное. Небезопасно). Весь код, который обращается к внутренним API-интерфейсам JDK и который ранее успешно компилировался с более ранними версиями, может больше не работать по умолчанию.

Эта функция предназначена для того, чтобы побудить разработчиков начать переход от использования внутренних элементов к стандартным API java. Это означало, что они могут без проблем перейти на будущие версии Java.

Опция запуска – незаконный доступ обеспечивает надежную инкапсуляцию для JDK 9 и до JDK 15. Начиная с jdk 15, по умолчанию используется предупреждение, а начиная с JDK16 по умолчанию используется значение “запретить”. На данный момент все еще возможно слегка ослабить инкапсуляцию для всех пакетов с помощью одной опции командной строки, однако в будущем будут работать только определенные пакеты с –add-opens.

Повышение производительности для разработчиков OpenJDK Эти изменения в первую очередь заметны разработчикам, работающим над разработкой OpenJDK, а не разработчикам Java, работающим над созданием приложений.

* Перейти с Mercurial на Git * Перейти на GitHub OpenJDK Репозитории исходного кода сообщества перенесены из Mercurial в Git и размещены на GitHub (применимо для JDK11 и выше).

Новые репозитории OpenJDK Git – https://github.com/openjdk

Включить функции языка C++14 (в исходном коде JDK) Эта функция рассказывает об использовании функций языка C++14 в коде JDK C++.

Порт Alpine Linux Порт Windows/AArch64 Основная идея этих изменений заключается не в переносе, а скорее в интеграции в основной репозиторий java.

Инструментальная поддержка Поддержка инструментов в настоящее время помогает повысить производительность разработчиков. С Java 16 Oracle продолжает приветствовать работу ведущих поставщиков IDE, которые предлагают разработчикам поддержку текущих версий Java. Разработчики будут продолжать получать поддержку Java 16 с этими IDE:

Затмение маркетплейса ИДЕЯ JetBrains

Функции инкубатора и предварительного просмотра

API внешнего компоновщика Java всегда поддерживала вызовы собственных методов через JNI (Java Native Interface) с давних пор. JNI, однако, сложен и подвержен ошибкам. С этим изменением JNI заменяется новым API – чистым способом Java для доступа к машинному коду. На данный момент это функция инкубатора. Этот API значительно упростит привязку и работу с собственной библиотекой.

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

Цель – Используя этот API, разработчики Java смогут легко писать переносимые и высокопроизводительные векторные алгоритмы.

Закрытые классы (2-й предварительный просмотр) Это функция предварительного просмотра. Это ограничивает, какие другие интерфейсы/классы могут их реализовывать или расширять. Используя эту функцию, автор класса/интерфейса может контролировать, какой код должен его реализовывать. Это также обеспечивает лучший способ декларативно ограничить использование суперкласса, чем модификаторы доступа.

API доступа к внешней памяти (3-й инкубатор) Этот API инкубатора был впервые представлен в Java 14 и снова в Java 15. Эта функция позволяет программам эффективно работать с собственной, постоянной, управляемой кучей и другими типами внешней памяти защищенным способом. Это также создает основу для API внешнего компоновщика.

часто задаваемые вопросы –

Каково назначение инкубаторных модулей? Модули инкубатора используются для информирования разработчиков о неокончательных API и неокончательных инструментах. Таким образом, пользователи могут предлагать отзывы, которые могут быть приняты снова в следующей версии, улучшая качество платформы Java.

Функции предварительного просмотра полностью определены и полностью реализованы функции Java, которые все еще непостоянны. Они доступны в выпусках JDK, чтобы разработчики могли получить представление о них и предоставить обратную связь, основанную на их вариантах использования. Основываясь на этом цикле обратной связи, эту функцию можно было бы сделать постоянной и в будущем выпуске. Таким образом, пользователи могут своевременно предоставлять обратную связь, а поставщики инструментов (например, IDEA) могут успеть создать поддержку такой функции еще до того, как ряд разработчиков Java начнут использовать ее в производстве.

Оригинал: “https://dev.to/saurabhshar/what-are-new-java-16-features-40mp”