Новости Java #28

• Главной новостью прошедшей недели стал выход Java 17. Это следующая LTS-версия Java, которая вышла спустя 3 года после предыдущей Java 11.

Но релиз Java 17 оказался не единственным большим событием. Сразу после того, как Oracle JDK 17 стал доступен для скачивания на сайте компании, Oracle опубликовал две важных новости.

Во-первых, лицензия Oracle JDK поменялась и вновь стала свободной, как это было до Java 11. Таким образом, сборку Oracle JDK 17 можно использовать бесплатно как в разработке, так и в продуктовом окружении в коммерческих целях. Такое решение было принято компанией в результате анализа обратной связи со стороны пользователей, которые приветствовали наличие сборок OpenJDK под GPL, но всё же хотели иметь «проверенный и надёжный, как скала», образ Oracle JDK под однозначно бесплатной лицензией. Кроме того, было заявлено, что бесплатные обновления Oracle JDK 17 будут выходить как минимум до сентября 2024 года, то есть три года, а не полгода с момента выхода, как это было для Java 9-16. Что касается Oracle OpenJDK, то с ним всё остаётся без изменений: Oracle будет поддерживать OpenJDK первые полгода и выпустит, как обычно, только два обновления (17.0.1 и 17.0.2).

Во-вторых, Oracle предложил участить цикл выхода LTS-версий Java и выпускать LTS не каждые три года, а каждые два. Это значит, что согласно этому предложению следующей LTS-версией может стать Java 21, которая выйдет в 2023 году, а не Java 23. Такое изменение компания мотивирует тем, что несмотря на наличие предсказуемых шестимесячных релизов, многие предприятия всё же предпочитают использовать LTS и не спешат обновляться. Более короткий цикл мог бы дать компаниям мотивацию обновляться чаще и повысит привлекательность всех релизов, в том числе и не-LTS. Это в свою очередь даст ускорение всей экосистеме Java.

Также Oracle запустил новый сайт dev.java, в котором собраны полезные материалы для изучения Java, ссылки на новости и полезные ресурсы.

• Новости JEP'ов:

• Джим Ласки и Брайан Гётц предложили рассмотреть идею новой языковой конструкции в Java: шаблонные строки. Шаблонные строки представляют собой улучшение и развитие идеи строковой интерполяции, которая есть в большинстве популярных языков программирования (C#, Kotlin, Scala, JavaScript и др).

Главное отличие от простой строковой интерполяции – это отделение механизма выражения шаблонной строки в языке от политики комбинирования строки и параметров. Например, все эти три примера используют один и тот же механизм:

String s = STR."Hello \{name}, I am \{age} years old";
var query = connection."SELECT * FROM \{table}";
String message = resourceBundle."error: file \{filename} not found";

Но политика комбинирования шаблона и параметров совершенно разная, потому что каждый из объектов реализует интерфейс политики по-своему: STR выполняет простую строковую конкатенацию, connection создаёт объект запроса (который необязательно String), выполняя валидацию и нормализацию, например, оборачивает имя таблицы в одинарные кавычки, а resourceBundle пытается найти подходящую строку для текущей локали и форматирует сообщение по правилам MessageFormat.

Таким образом, шаблонные строки не просто решают задачу интерполяции, а предоставляют гибкий и общий инструмент, дающий возможность библиотекам полностью контролировать весь процесс валидации, трансформации и комбинирования параметров со строкой.

• Вышел Eclipse 2021-09. Среди улучшений более быстрый стартап IDE, функция Raw Paste, новый quick-fix для конвертации цикла while в do-while, дефолтные фильтры в Java → Appearance → Type Filters, улучшенный диалог сохранения нескольких файлов, улучшенная тёмная тема и другие. Встроенной поддержки Java 17 пока что нет, но она доступна в Eclipse Marketplace. Более подробно про улучшения можно посмотреть в видео.

• Роман Кеннке, лидер проекта Shenandoah в RedHat, рассказал, как им удалось достичь субмиллисекундных пауз сборщика мусора в Java 17. В этом им помогла конкурентная обработка стеков потоков, которая ранее была реализована для ZGC и также помогла значительно снизить паузы.

• Вышел Java Annotated Monthly от JetBrains за сентябрь 2021.

• Вышла JavaFX 17 с Long Term Support.

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

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