Корпорация Oracle объявила о выпуске Java 14 (Oracle JDK 14). Java 14 демонстрирует неизменную приверженность Oracle ускорению инноваций, предоставляя предприятиям и сообществу разработчиков новые усовершенствования каждые шесть месяцев в рамках релиза функциональных обновлений (Feature Release). Новейший комплект Java Development Kit (JDK) предлагает разработчикам новые функции, в том числе две новые долгожданные ознакомительные возможности (Preview Features) — Pattern Matching for instanceof (JEP 305) и Records (JEP 359), а также Text Blocks (JEP 368) для повторного превью. Кроме того, в новом релизе Java добавлена поддержка конструкций выбора Switch Expressions, включены новые API-интерфейсы для непрерывного мониторинга данных JDK Flight Recorder, расширена доступность Z Garbage Collector с малой задержкой для macOS и Windows, а в модулях инкубатора представлен упаковщик самодостаточных приложений Java и новый API-интерфейс для безопасного и эффективного доступа к областям внешней памяти вне динамически распределяемой heap-памяти Java.
«Java 14 — еще одно свидетельство преимуществ шестимесячного цикла обновления: разработчики получают доступ к функциям, которых они в противном случае ожидали бы годами, — отметил Джордж Сааб, вице-президент Oracle по разработке платформы Java, — JDK 14 не только содержит ряд улучшений для повышения продуктивности разработчиков, в этот релиз также впервые включен важный контент из таких проектов, как Project Panama — расширенный интерфейс доступа к внешней памяти (Foreign-Memory Access API, JEP 370) и дальнейшие усовершенствования из Project Amber — Pattern Matching (JEP 305) и Records (JEP 359). Эти крупные улучшения свидетельствуют об обширной работе, проводимой в рамках данных новаторских проектов».
Релиз Java 14 — результат скоординированной ИТ-разработки, включающей открытый анализ, еженедельные сборки и активное сотрудничество между инженерами Oracle и членами мирового сообщества разработчиков Java в рамках OpenJDK Community и Java Community Process. Новые функции, представленные в Java 14, включают в себя:
- JEP 305: Pattern Matching for instanceof (превью) — Данное знакомство с технологией расширяет функциональность сопоставления с шаблоном для оператора instanceof. Это повышает производительность труда разработчика, устраняя необходимость в шаблонном коде, и позволяет получить более компактный и типобезопасный код.
- JEP 343: Packaging Tool (инкубатор) — Предоставляет разработчикам возможность упаковывать приложения Java для распространения в специфичных для платформ форматах. Это помогает создавать современные приложения в виде единого поставляемого пакета библиотек, в котором объединены среда исполнения и код приложения. Эти инструменты представлены в модуле инкубатора и позволяют передавать разработчикам неконечные версии API и нефинальные версии инструментов для получения их отзывов. Такие API/инструменты либо дорабатываются до финальных версий, либо удаляются в следующем релизе.
- JEP 345: NUMA-Aware Memory Allocation for G1 — Повышает общую производительность сборщика мусора G1 в системах с архитектурой памяти NUMA (Non-Uniform Memory Access).
- JEP 349: JFR Event Streaming — Открывает данные JDK Flight Recorder (JFR) для непрерывного мониторинга. Это упростит доступ различных инструментов и приложений к данным JFR и будет стимулировать дальнейшие инновации.
- JEP 352: Non-Volatile Mapped Byte Buffers — Добавляет режим мэппинга файлов для JDK при использовании энергонезависимой памяти. Постоянный характер энергонезависимой памяти упрощает обеспечение неизменности данных и улучшает производительность, что и используется этой функцией.
- JEP 358: Helpful NullPointerExceptions — Повышает удобство использования исключений NullPointerException, точно описывая, какая переменная была равна нулю, и предоставляя другую полезную информацию. Это повысит продуктивность разработчиков и улучшит качество многих инструментов разработки и отладки.
- JEP 359: Records (превью) — Эта ознакомительная возможность обеспечивает компактный синтаксис объявления классов, которые содержат поверхностные неизменяемые данные (shallowly immutable). Эта функция может значительно сократить шаблонный код в классах такого типа, но самое большое преимущество — возможность моделировать данные как данные. Она позволит легко, однозначно и кратко объявлять эти поверхностные неизменяемые агрегаты номинальных данных.
- JEP 361: Switch Expressions (стандартная) — Данная функция присутствовала в JDK 12 и JDK 13 как ознакомительная и теперь добавлена в качестве стандартной. Это позволяет использовать конструкцию выбора switch как оператор или выражение. Данная функция упрощает кодирование и открывает возможность применения функции сопоставления с шаблоном (Pattern Matching, JEP 305), представленной в этом релизе в качестве ознакомительной.
- JEP 364: ZGC on macOS и JEP 365: ZGC on Windows — Хотя большинству пользователей, которым нужна функция Z Garbage Collector, также необходима масштабируемость сред на основе Linux, часто возникает потребность в развертывании и тестировании для поддержки ZGC в macOS и Windows. Существуют также приложения для ПК, ориентированные на Windows и macOS, которые получат преимущества от использования ZGC.
- JEP 368: Text Blocks (второе превью) — Текстовые блоки впервые были представлены в качестве превью в Java 13, и после отзывов и замечаний конечных пользователей в них были добавлены улучшения. Теперь текстовые блоки снова предлагаются как ознакомительная возможность в Java 14 с целью сделать их стандартом в будущем выпуске JDK. Текстовые блоки позволяют легко выражать строковые последовательности, которые занимают несколько строк исходного кода. Это улучшает читаемость текстовых фрагментов в программах Java, которые представляют код, написанный на отличных от Java языках. Поддерживается миграция из строковых литералов за счет того, что любая новая конструкция может выражать тот же набор строк, что и строковый литерал, интерпретировать те же escape-последовательности и обрабатываться так же, как строковый литерал.
- JEP 370: Foreign-Memory Access API (инкубатор) — API-интерфейс, позволяющий программам Java безопасно и эффективно получать доступ к областям внешней памяти вне динамически распределяемой heap-памяти Java.
Пользователям и предприятиям, которым нужна коммерческая поддержка, Oracle также предлагает подписку Oracle Java SE Subscription — недорогое и предсказуемое решение технической поддержки. Это предложение используется тысячами крупных и малых организаций по всему миру и позволяет им получить лицензию Java SE и всестороннюю поддержку необходимых систем на требуемый период времени. Эти клиенты получают выгоду от гибкости и регулярного доступа к проверенным и сертифицированным обновлениям поддерживаемых релизов непосредственно от Oracle, касающихся производительности, стабильности и безопасности.
Java продолжает оставаться в мире №1 языком программирования, предпочитаемым разработчиками программного обеспечения. И, как свидетельствует своевременное предоставление инноваций в Java 14 благодаря продуманному планированию и вовлеченности экосистем, платформа Java остается основным инструментом для разработки современных приложений.