




Вышла Java 26
Вышла общедоступная версия Java 26. В этот релиз попало более 2700 закрытых задач и 10 JEP'ов. Release Notes можно посмотреть здесь. Полный список изменений API – здесь.
Java 26 не является LTS-релизом, и у него будут выходить обновления только полгода (до сентября 2026 года).
Скачать JDK 26 можно по этим ссылкам:
Oracle JDK (лицензия NFTC)
OpenJDK (лицензия GPLv2 with Classpath Exception)
Рассмотрим все JEP'ы, которые попали в Java 26.
(Ссылка)
При использовании глубокой рефлексии для изменения final полей (с помощью методов Field::setAccessible и Field::set) теперь выдаются предупреждения в консоль:
Чтобы подавить такие предупреждения, теперь нужно будет использовать новую опцию командной строки --enable-final-field-mutation. С её помощью перечисляются модули, которым разрешено изменение final полей:
Одной лишь опции --enable-final-field-mutation может быть недостаточно для подавления предупреждений. Если класс, в котором находится final поле, находится в другом модуле, то также необходима гарантия того, что пакет класса открыт для глубокой рефлексии модулю (--add-opens), который собирается изменить поле.
Также можно контролировать поведение Java при несанкционированном изменении final полей. Для этого появилась ещё одна опция --illegal-final-field-mutation, которая может принимать одно из четырёх значений:
--illegal-final-field-mutation=allow разрешает изменений final полей без всяких предупреждений. Это означает откат к старому поведению (как в Java 25 и более старых релизах).
--illegal-final-field-mutation=warn разрешает изменений final полей, но выдаётся предупреждение при первом выполнении модуля такой нелегальной операции. Это значение по умолчанию в Java 26.
--illegal-final-field-mutation=debug – это то же, что и warn, но
Читать на habr.com