Новости Java #31

• Появилось расписание выхода JDK 18. По плану общедоступная версия Java 18 должна выйти 22 марта 2022 года.

• Вышел новый JEP 421: Deprecate Finalization for Removal. В нём предлагается пометить все методы, относящиеся к финализации, как deprecated for removal, а также добавить опцию командной строки, позволяющую отключить финализацию во время выполнения. Кроме того, в будущих версиях JDK предлагается отключить финализацию по умолчанию с возможностью включения, затем отключить полностью, а потом удалить, наконец, весь API финализации.

Финализация – это механизм, который присутствовал в Java с момента её появления. Со временем стало понятно, что у finalize() есть серьёзные недостатки: проблемы безопасности (возможность утечки и возрождения финализируемого объекта, возможность «сломать» объект и привести его в неконсистентное состояние), проблемы производительности (замедление работы сборщика мусора, увеличение потребляемой памяти из-за дополнительных объектов и вспомогательных структур данных GC), отсутствие гибкости (невозможность отмены финализации, отсутствие контроля потоков, которые будут вызывать финализацию), сложная программная модель (риск забыть вызвать super.finalize() в подклассе) и т.д. Это привело к тому, что в Java 9 метод Object.finalize() стал помечен как deprecated. Теперь настало время идти дальше в сторону полного отказа от финализации.

• В Java 18 был интегрирован JEP 418: Internet-Address Resolution SPI. Про него мы писали в выпуске #24.

• Появилось два новых черновика JEP: Region Pinning in G1 и Linux/RISC-V Port.

• JUG.ru выложил видео с JPoint 2021.

• JetBrains выпустил Java Annotated Monthly за ноябрь 2021.

• Вышел Gradle 7.3.

• Вышел StreamEx 0.8.0.

Подписывайтесь на канал в Telegram, чтобы не пропускать новости.

Все материалы на этом сайте выложены под лицензией CC BY-SA 4.0
© Евгений Козлов, 2017-2021
Feed