Что нового в JDK: горячие фичи
В марте 2024 года выходит JDK 22. В связи с этим радостным событием, хочу кратко рассказать о некоторых новых горячих фичах этого релиза.
Так же упомяну о немного "остывших" фичах, которые были в статусе превъю в JDK 21, а 22 поменяли свой статус.
Не будем тянуть, поехали:)
Выражения перед super(...) (Statements before super(...) (Preview))
Это превью фича в JDK 22.
Хотят разрешить выражения перед super в констркторе, например, для валидации аргументов.
Нельзя будет ссылаться там на экземпляр создаваемого объекта (что логично).
Пример:
Шаблоны строк (String Templates)
Фича будет в статусе Second Preview(в jdk 21 была preview).
Нужна для того, чтобы сделать удобнее работу со строковыми выражениями. Позволит подставлять значения переменных в нужные места строки вместо шаблона вида: \{имя переменной}.
Но этим дело не ограничивается. Фича представляет собой api процессоров шаблонов (template processor). Можно разрабатывать свои реализации этих процессоров, которые позволят, например, безопасно работать с sql или json.
В JDK войдут процессоры шаблонов STR и FMT для работы со строками. Последний позволит ещё форматирование.
На мой взгляд, довольно удобно. Может быть к следующему LTS фича выйдет из статуса preview.
Примеры:
Векторный Api (Vector API (Seventh Incubator))
Фича в 22 все ещё в инкубаторе.
Апи позволит работать с векторными вычислениями и оптимизирует их производительность.
Безымянные переменные и шаблоны (Unnamed Variables & Patterns)
В JDK 21 она объявлена как превью фича, в 22 уже основная.
Будем использовать безымянную переменную _ , когда она должна быть по каким-то причинам объявлена, но обращение к ней не предполагается. То есть, разработчик получает возможность запретить обращаться к ней.
Думаю, не так часто это пригодится, и использовать эту фичу надо вдумчиво. Задать себе вопрос: а оно мне надо? Может можно как-то по-другому написать код?
Пример (из документации, конечно надуманный, зато понятно объясняет смысл):
Внешние функции и апи работы с внешней памятью (Foreign Function & Memory API)
В JDK 21 была превъю.
Для получения безопасного доступа к коду и памяти внешней(!) по отношению к среде выполнения Java. Имеет существенные преимущества по сравнению с JNI.
Безымянные классы и методы экземпляра Main(Implicitly Declared Classes and Instance Main Methods)
В JDK 22 будет как Second Preview. В 21-м было Preview.
Когда я начинал изучать Java, то первым делом написал простейшую программу Hello world вида:
А потом потратил кучу времени, чтобы понять, для чего там все эти слова.
Теперь же, с появлением этой фичи, студенты будут меньше ломать голову на начальном этапе изучения Java и не испугаются раньше времени:)
Пример того, как теперь можно будет написать Hello world:
Пожалуй, на сегодня хватит фич, чтобы не сильно Вас утомлять:)
В следующей статье я продолжу рассказ о новых фичах Java.
А пока пишите в комментариях, какую фичу Вы ждёте больше всего в новом релизе, а также буду рад любым замечаниям и дополнениям по теме статьи.