Java 17
Что такое Java 17?
Java 17 вышла в сентябре 2021 года и это выпуск LTS. Широкий LTS до неё был Java 11, позже пришла Java 21. В 17 готовы record, sealed class и pattern matching для instanceof. Текстовые блоки пришли раньше и в 17 тоже есть.
Для чего нужен Java 17?
Java 17 — цель для серверного приложения, библиотеки и части инструментов сборки Android.
- Серверный фреймворк вроде Spring
- Перенос старого кода Java 8 или 11
- Короткий тип данных через record
- Стабильные инструменты JDK
Что можно делать с Java 17?
На Java 17 программу с Java 11 можно перенести на более новый синтаксис после проверки. В новом проекте record укорачивает DTO. Самого нового синтаксиса, включая часть вещей из более позднего LTS, в 17 нет.
Сложно ли освоить Java 17?
Для того, кто знает Java, 17 — не новый язык. Трудность в переходе со старого JDK, удалённых внутренних API и версии инструмента сборки. Если java --version не показывает 17, код не на 17.
Плюсы и ограничения
Плюс: поддержка на годы, стабильность и широкие библиотеки. Ограничение: части возможностей языка из 21 и более поздних LTS здесь нет. Если проект ещё на 8, переход не обходится без тестов.
Основные понятия
JDK даёт язык и инструменты. JRE только для запуска. record — короткий класс с полями.
- LTS значит долгую поддержку
- sealed class ограничивает, кто может наследоваться
- pattern matching укорачивает проверку instanceof
- Gradle или Maven выбирает, каким JDK собирать проект
Короткий пример
Сначала посмотри установленную версию. Затем record записывает маленький тип данных так.
java --version
record Point(int x, int y) {}
Частые вопросы
- Java 17 — самая новая версия? Нет. Есть более новый LTS. 17 всё ещё цель во многих местах.
- Java 17 и язык Java — разное? Нет. 17 — один выпуск языка.
- Java 17 хватает для Android? Да, если инструмент сборки разрешает. Это видно в Gradle-файле проекта.