X

Блог Oracle в России и СНГ

Oracle объявляет о выходе 16-й версии платформы Java

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

Синтаксические конструкции “Паттерн-матчинг” и “Записи” включены в JDK 16 после года практического применения и изучения обратной связи от сообщества

Oracle добавляет поддержку GraalVM Enterprise в подписку на Java SE 

Москва,  23 марта 2021  – Компания Oracle объявляет о выходе нового релиза платформы Java 16  (Oracle JDK 16), включающего 17 новых усовершенствований  и обеспечивающего более высокую продуктивность разработки. В новом релизе Java Development Kit (JDK) финализированы функции Паттерн-матчинга для оператора InstanceOf (JEP 394) и Записи (JEP 395), синтаксические улучшения, впервые представленные как превью в Java 14. Кроме того, с выходом нового релиза разработчики могут использовать новый инструмент упаковки (JEP 392) для создания самодостаточных  Java-приложений. Доступны для изучения три инкубационных модуля: инструментарий для преобразования векторных вычислений Vector API (JEP 338), инструментарий для статического доступа к нативному коду из Java Foreign Linker API (JEP 389) и API для доступа вне кучи Java (JEP 393), а также «Запечатанные» классы, которые появились в Java 16 в режиме второго превью (JEP 397). 

 

Oracle выпускает новые релизы Java каждые шесть месяцев, чтобы предоставить разработчикам четкий график. Обновления раз в полгода предоставляют преимущества доступа к постоянному потоку инноваций и обеспечивает непрерывное повышение продуктивности, стабильности и безопасности, что способствует распространению Java в компаниях всех размеров и индустрий.

«С выпуском нового релиза мы еще раз убедились в том, что график выхода обновлений раз в полгода удобен и эффективен, - отметил Жорж Сааб, вице-президент по разработке Java Platform Group, Oracle. - Паттерн-матчинг для оператора InstanceOf и Записи были впервые представлены год назад в релизе JDK 14 и с тех пор прошли несколько раундов тестирования и практического применения с обратной связью от сообщества. Этот процесс не только дал разработчикам Java возможность поэкспериментировать с функциями до финализации, но и дал возможность услышать критику. В результате были созданы два стабильных JEPа, которые действительно отвечают потребностям сообщества».

Релиз Java 16 является результатом процесса разработки, открытого для критики и пожеланий со стороны сообщества. В процессе подготовки выходили регулярные обзоры и еженедельные промежуточные сборки. Интенсивное сотрудничество между разработчиками из Oracle и участниками сообщества из разных стран мира  осуществлялось через OpenJDK Community и Java Community Process. Краткий перечень нового функционала, доступного в новом релизе Java 16:

Улучшения языка, впервые представленные в JDK 14 и финализированные в JDK 16

  • JEP 394: Pattern Matching for instanceof –  – Улучшает язык программирования Java за счет возможности паттерн-матчинга для оператора InstanceOf. 
  • JEP 395: Records – Расширяет язык программирования Java с помощью записей, которые представляют собой классы, действующие как прозрачные носители неизменяемых данных. Записи можно рассматривать как номинальные кортежи.

Новый инструмент для повышения продуктивности разработки

JEP 392: Packaging Tool – Предоставляет инструмент jpackage для упаковки самодостаточных Java приложений.

 

  • Улучшенное управление памятью для повышения производительности

JEP 387: Elastic Metaspace – Более оперативно возвращает неиспользуемую память метаданных класса HotSpot (metaspace) в операционную систему, сокращает объем метапространства и упрощает код метапространства, чтобы снизить затраты на обслуживание. 

  • JEP 376: ZGC: Concurrent Thread-Stack Processing – Перемещает обработку стека потоков ZGC из safepoints в параллельную фазу. Это позволяет исключить последнее значимое узкое место для обеспечения одновременной обработки стека.

 

Улучшенный нетворкинг для повышения производительности и гибкости разработчиков

  • JEP 380: UNIX-Domain Socket Channels – В релизе добавлена поддержка сокетов доменов Unix в socket channel и server-socket channel API пакета java.nio.channels. Такие сокеты используются для межпроцессного взаимодействия внутри одного хоста, и в них не используются сетевые соединения, что делает такое взаимодействие более безопасным и эффективным. Они во многом похожи на сокеты TCP/IP, за исключением того, что к ним обращаются по путям файловой системы, а не по адресам Интернет-протокола (IP) и номерам портов.

Решение проблемы несовместимости с будущими релизами

  • JEP 396: Strongly Encapsulate JDK Internals by Default – I В JDK 9 мы строго инкапсулировали новые внутренние элементы API, тем самым ограничив доступ к ним. Однако для облегчения перехода, на момент выхода JDK 9 было принято решение не инкапсулировать так же строго во время выполнения содержимое пакетов, как это требовалось в JDK 8. В JDK 16 ограничение снова ужесточено, большинство внутренних элементов JDK инкапсулировано по умолчанию, за исключением критически важных внутренних API-интерфейсов, например, sun.misc.Unsafe. Конечные пользователи по-прежнему могут выбрать упрощенную сильную инкапсуляцию, которая используется по умолчанию с момента выхода JDK 9. Это побудит разработчиков перейти от использования внутренних элементов к использованию стандартных API, чтобы и они, и пользователи могли без проблем перейти на будущие версии Java.
  • JEP 390: Warnings for Value-Based Classes – Классы-обертки примитивных типов теперь относятся к категории value-based классов, и их конструкторы, которые ранее стали deprecated в Java 9, теперь помечены как deprecated for removal. Предоставляет предупреждения о неправильных попытках синхронизации экземпляров любых value-based классов в платформе Java.

 

Инкубационные модули и превью

  • JEP 338: Vector API (Incubator) – Представляет собой начальную итерацию модуля инкубатора jdk.incubator.vector для преобразования векторных вычислений, которые надежно компилируются во время выполнения, в оптимальные векторные аппаратные инструкции на поддерживаемых CPU архитектурах.
  • JEP 389: Foreign Linker API (Incubator) – API, предлагающий статический, более простой доступ из Java к нативному коду.
  • JEP 393: Foreign-Memory Access API (Third Incubator) – API, позволяющий программам Java безопасно и эффективно обращаться к внешней памяти за пределами кучи Java.
  • JEP 397: Sealed Classes (Second Preview) – Улучшает язык программирования Java с помощью запечатанных классов и интерфейсов. Запечатанные классы и интерфейсы ограничивают возможность другим классам или интерфейсам расширять или реализовывать их.

 

Улучшения по пожеланиям участников сообщества OpenJDK

  • JEP 347: Enable C++14 Language Features (in the JDK source code) – Позволяет использовать функции стандарта языка C++14 в исходном коде JDK C++ и дает конкретные рекомендации о том, какие из этих функций могут использоваться в коде HotSpot.
  • JEP 357: Migrate from Mercurial to Git – Переносит репозитории исходного кода сообщества OpenJDK с Mercurial (hg) на Git.
  • JEP 369: Migrate to GitHub – Размещает Git репозитории сообщества OpenJDK на GitHub.

 

Новые порты, обеспечивающие поддержку Java на других платформах

  • JEP 386: Alpine Linux Port – Портирует JDK на Alpine Linux и другие дистрибутивы Linux, которые используют musl в качестве основной библиотеки C, как для архитектуры x64, так и для архитектуры AArch64.
  • JEP 388: Windows/Aarch64 PortПортирует JDK на Windows/AArch64.

 

Постоянное улучшения Java

Java остается одной из самых успешных платформ разработки. Платформа, базирующаяся на принципах постоянного потока инноваций, нацелена на требования и растущие потребности современных разработчиков приложений. Чтобы сделать подписку на Java SE Subscription еще более привлекательной для клиентов, Oracle добавила GraalVM Enterprise в качестве бесплатного элемента подписки. GraalVM может помочь повысить производительность и снизить потребление ресурсов, особенно в микросервисах и cloud native архитектурах. Компании, использующие Java по подписке Oracle Java SE, получают не только  новейшие обновления и прямой доступ к к экспертам Oracle по Java, но и значительную экономию в сравнении с альтернативными подходами. 

 

«Вместо того, чтобы каждые три или четыре года интересоваться тем, какие обновления появились в Java, я живу в другом, предложенном мне Oracle ритме, который позволяет оставаться активным разработчиком, преподавателем и инструктором, - отметил Хосе Помар, доцент Университета Сорбонна Париж Нор, и один из организаторов группы Paris Java User, - Я с интересом ожидал возможности пользоваться синтаксической конструкцией “Записи”, чтобы повысить производительность и читаемость моего кода обработки данных, после того как потестировал эту функцию в превью. И в новом релизе функция стала доступной для работы».

Разработчики могут узнать больше о Java 16 и получить практический опыт на Oracle Developer Live: Java Innovations 23, 25 и 30 марта.

 

Дополнительные ресурсы

 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.