• Появилось расписание выхода 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.