• Самая главная новость этой недели – выход Kotlin 1.5.0. Перечислим некоторые изменения и улучшения:
- Появилась поддержка JVM-записей с помощью аннотации
@JvmRecord
. - Модификатор
sealed
теперь можно применять не только классам, но и к интерфейсам. - Подклассы
sealed
классов теперь не обязаны объявляться в том же файле, а могут объявляться в любых файлах того же пакета. inline value
классы, которые появились в экспериментальном режиме в Kotlin 1.2.30, теперь стали стабильными.- Новый IR (Intermediate Representation) компилятор Kotlin в JVM стал стабильным и включенным по умолчанию.
- SAM (Single Abstract Method) адаптеры теперь компилируются в
invokedynamic
. Для простых лямбд такая возможность тоже появилась, но только в экспериментальном режиме с включенной опцией-Xlambdas=indy
. - Версия JVM target теперь 1.8 вместо 1.6.
• Вышел новый JEP 415: Context-Specific Deserialization Filters.
• Вышел выпуск Java Annotated Monthly за май 2021.
• В Java предложено улучшить алгоритм сортировки чисел. Тесты показывают, что прирост производительности составляет 50% в среднем и до 6 раз на больших случайных массивах. Огромный прирост в последнем случае достигается засчёт использования поразрядной сортировки.
• В рассылке OpenJDK было предложено сделать java.lang.Object
абстрактным классом. Это бы сделало согласованной модель, в которой примитивные классы могут наследоваться только от абстрактных классов без полей, но сломало бы обратную совместимость на уровне исходного кода. Но запретить вызывать new Object()
можно поэтапно, сначала показывая предупреждение, а спустя несколько лет переквалифицировать в ошибку компиляции.
• Вышел бэкпорт-релиз Gradle 6.9.
• Вышел JMH 1.30.