Компания Oracle представила новую версию JDK (Java Development Kit) 15. В мажорное обновление комплекта инструментов разработчика вошли 14 JEP (JDK Enhancement Proposal, предложений по улучшению JDK) и тысячи мелких исправлений.
Изменения в языке
В Java 13 мы впервые увидели блоки текста – но только в формате превью. В 15 версии они стали стабильной синтаксической конструкцией. По значимости это нововведение сравнивают, например, с внедрением switch-выражений в Java SE 7.
А вот паттерн-матчинг оператора instanceof, который проверяет принадлежность к классу, в Java 15 проходит второе превью. Если сообщество его одобрит, то изменения закрепят в 16 версии. Пока же включить матчинг можно флагом -- enable-preview.
На ту же стадию перешли и записи. В обновлении для них разрешили локальные интерфейсы и перечисления, убрали обязательное правило для канонического конструктора – теперь он может быть не только публичным.
Наконец, представили первое превью запечатанных классов. Они помечаются модификатором sealed – он накладывает ограничения на наследование.
Обновленная Java Virtual Machine
В новой версии закрепили сборщик мусора ZGC. Он способен работать в условиях огромных количеств мусора (размером до 1 ТБ) и может активироваться в рамках небольших пауз – длиной до 10 мс.
Для полноценной продуктовой разработки открыли и сборщик мусора Shenandoah, который также работает в небольших паузах. Чтобы получить доступ к Shenandoah, можно обновиться до JDK 15 или даже до JDK 11.0.9 – сюда его портируют 20 октября.
Под нож пошла технология оптимизации Biased Locking. Эксперты сообщества решили, что преимущества этой технологии неочевидны, а поддержка достаточно сложная и дорогостоящая.
Пока можно использовать Biased Locking, если включить ее вручную опцией -XX:+UseBiasedLocking. Но система каждый раз будет выдавать предупреждение.
Свежий API
В JDK 15 стал доступен еще один новый тип классов – скрытый. Чтобы создавать их, ввели новый метод Lookup.defineHiddenClass(). Использовать скрытый класс можно только через рефлексию – напрямую сослаться на такой класс не получится. По имени вы его также не найдете, в стек-трейсах методы не отобразятся.
Также из API удалили движок JavaScript Nashorn. Заменить его рекомендуют, например, на Rhino или GraalVM JavaScript.
Кроме того, в новой версии реализовали алгоритм EdDSA с открытым ключом для создания цифровой подписи. Разработчики также переписали часть старых сокетов, чтобы было проще адаптировать к виртуальным нитям (их введут в рамках проекта Loom) и сделали следующий шаг к удалению RMI Activation.
Доступность
JDK 15 представлен в двух версиях:
- Проприетарная Oracle JDK 15 имеет ряд ограничений в использовании. Это продукт с закрытым исходным кодом, ориентированный на коммерческую разработку.
- OpenJDK 15 – проект с открытым исходным кодом. Версия доступна бесплатно.
Отметим также, что Java 15, как и ее предшественники, является STS-релизом (Spring Tool Suite). Для нее запланировано только два крупных обновления.