Корпорация Oracle объявила о выпуске Java 15 (Oracle JDK 15). Как подчеркивают в компании, на протяжении 25 лет Java остается языком программирования номер 1 – его используют 69% профессиональных разработчиков по всему миру. Обновленный комплект разработчика Java предлагает новые функции, такие как алгоритм цифровой подписи на основе кривой Эдвардса (Edwards-Curve Digital Signature Algorithm, JEP 339) и скрытые классы (Hidden Classes, JEP 371), а также включает финальные версии функций, которые ранее были ознакомительными: текстовые блоки (Text Blocks, JEP 378) и сборщик мусора ZGC (JEP 377).

В качестве ознакомительной возможности в Java 15 впервые добавлены запечатанные классы (Sealed Classes, JEP 360); также в целях получения дополнительной обратной связи от сообщества в качестве ознакомительных возможностей повторно включены сопоставление с образцом для оператора instanceof (Pattern Matching, JEP 375) и записи (Records, JEP 384).

Начиная с версии Java 10, вышедшей в 2018 г., Oracle выпускает новые релизы каждые полгода, и Java 15 не исключение. Такой график позволяет разработчикам быстрее получать доступ к новым возможностям и гарантирует стабильность. Релиз Java 15, поясняют в Oracle, – это результат скоординированной ИТ-разработки, включающей открытый анализ, еженедельные сборки и тесное сотрудничество между инженерами компании и сообществом разработчиков Java по всему миру в рамках сообщества OpenJDK Community и программы Java Community Process.

Java 15 включает в себя следующие новые функции:

• JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA). Эта функция позволяет повысить безопасность и производительность за счет внедрения криптографических подписей с использованием алгоритма EdDSA.

• JEP 371: Hidden Classes. Функция помогает увеличить производительность – улучшает взаимодействие Java с фреймворками, которые генерируют классы при выполнении и используют их косвенно, через механизм рефлексии.

В релиз также вошли финальные версии функций, которые ранее были ознакомительными:

• JEP 378: Text Blocks (была ознакомительной в JDK 13 и JDK 14). Эта функция помогает увеличить производительность разработки благодаря добавлению строковых литералов и автоматическому форматированию строк предсказуемым образом.

• JEP 377: ZGC. Масштабируемый сборщик мусора с низкими показателями задержки был впервые представлен в JDK 11 для ознакомления и теперь выпущен в финальной версии.

Ознакомительные возможности и инкубатор:

• JEP 360: Sealed Classes. Ознакомительная возможность призвана повысить производительность разработчиков за счет добавления в язык Java запечатанных классов и интерфейсов. Запечатанные классы и интерфейсы предусматривают ограничения на то, какие другие классы и интерфейсы могут расширять или реализовать их.

• JEP 375: Pattern Matching for instanceof (впервые представлена в JDK 14). Эта ознакомительная возможность помогает улучшить производительность за счет устранения потребности в шаблонном коде и позволяет получить более компактный и типобезопасный код.

• JEP 384: Records (впервые представлена в JDK 14). Ознакомительная возможность помогает улучшить производительность за счет более компактного синтаксиса для объявления классов, содержащих поверхностные неизменяемые данные.

• JEP 383: Foreign-Memory Access API (впервые представлена в JDK 14). Эта функция из инкубатора определяет API, с помощью которого программы Java могут безопасно и эффективно получать доступ к областям внешней памяти вне динамически распределяемой heap-памяти Java.

В части модернизации существующего кода новый релиз включает JEP 373 – переработку устаревших API DatagramSocket и MulticastSocket. Эта возможность помогает улучшить удобство сопровождения и стабильность JDK за счет замены существующих API java.net.DatagramSocket и java.net.MulticastSocket более простыми и современными версиями.

Как и в случае предыдущих релизов, в JDK 15 не поддерживаются устаревшие функции (JEP 374: Biased Locking, JEP 385: RMI activation) и удалены исключенные функции (JEP 372: Nashorn JavaScript Engine) и порты (JEP 381: Solaris and Sparc).