Версии Java (8 / 11 / 17 / 21 / 25)
Тема дорожной карты · Java
LTS (Long-Term Support) версии Java — это релизы, которые Oracle и вендоры OpenJDK (Eclipse Temurin, Amazon Corretto, Azul Zulu, Microsoft Build of OpenJDK) обязуются поддерживать с обновлениями безопасности и исправлениями ошибок на протяжении десяти и более лет, именно на них стандартизируются предприятия и производственные системы. Java 8 (выпущена в 2014 году) ввела Lambda-выражения, Stream API, Functional Interfaces, Optional<T> и новый API java.time и оставалась доминирующей производственной версией почти десятилетие благодаря революционному росту производительности и широкой поддержке экосистемы. Java 11 (выпущена в сентябре 2018 года) стала первым LTS в рамках шестимесячного цикла релизов; она добавила новый HTTP Client API (java.net.http.HttpClient), удобные методы String — isBlank(), strip(), lines(), — ключевое слово var для локальных переменных (портировано из Java 10) и удалила устаревшие модули Applet и CORBA. Java 17 (сентябрь 2021 года) принесла sealed classes и интерфейсы, сопоставление с образцом для instanceof, стабильные records, строгую инкапсуляцию внутренностей JDK через JPMS и новый API RandomGenerator — она стала базовым требованием для Spring Boot 3.x и Hibernate 6 (сама ветка Boot 3.x вышла из OSS-поддержки 30 июня 2026 года — актуален Spring Boot 4 на Spring Framework 7). Java 21 (сентябрь 2023 года) принесла стабильные virtual threads (Project Loom), обеспечивающие массовую Concurrency с простым блокирующим кодом, sequenced collections, record patterns и сопоставление с образцом для switch — всё это уже используется в Spring 6.1, Micronaut 4 и Quarkus 3; string templates, показанные в 21 как preview, были отозваны в JDK 23 (JEP 465 withdrawn) и ждут редизайна. Текущий LTS — Java 25 (16 сентября 2025 года): compact object headers (JEP 519), финальные Scoped Values (JEP 506), compact source files и void main() (JEP 512), flexible constructor bodies (JEP 513), generational Shenandoah (JEP 521) и AOT-кэш Project Leyden (JEP 514/515). Дальше по графику: JDK 26 — GA 17 марта 2026 года (HTTP/3 в HttpClient — JEP 517, AOT-кэш с любым GC, удалён Applet API), JDK 27 — 15 сентября 2026 года (non-LTS), а следующий LTS — Java 29 в сентябре 2027 года.
Как это работает
Версии Java (8 / 11 / 17 / 21) компилирует исходник .java в байткод (.class), который исполняется на JVM (Java Virtual Machine). JVM даёт GC, JIT-компиляцию (HotSpot, GraalVM) и платформенную абстракцию. Основные дистрибутивы: OpenJDK (референс), Temurin (Eclipse, бесплатно, популярно), Liberica (BellSoft, удобная поддержка для РФ), Amazon Corretto. В production — LTS-версии (17, 21, 25); non-LTS-релизы (каждые 6 месяцев) — для экспериментов с инструментами.
Когда применять
Java — для любого enterprise-backend, разработки Android (Kotlin или Java), проектов с гравитацией JVM-экосистемы (Spring, Hibernate, Kafka-клиент, Elasticsearch-клиент). Startup time + базовая память выше Go и Rust; экосистема библиотек + тулинга + observability непревзойдённа. Liberica или Temurin для production-сборок; пиньте major-версию + patch в CI.
Типичные ошибки
Ловушки Версии Java (8 / 11 / 17 / 21): надежда на «вечно бесплатный» Oracle JDK: с JDK 17 по лицензии NFTC он бесплатен и в production, но лишь в течение окна поддержки (для 21 — до сентября 2026, для 25 — дольше), дальше — платная подписка или миграция (Temurin/Corretto/Liberica остаются безопасными дефолтами); пиннинг non-LTS-релиза (вынуждены обновляться каждые 6 месяцев); копирование туториалов для Java 8 (new ArrayList<Integer>() → List.of(...); лямбды изменили композицию всего). Прочтите migration notes к целевому LTS.
Связанные понятия
Полезные ресурсы
Проверить знания (2)
Загрузка вопросов…