Версии Java (8 / 11 / 17 / 21)
Тема дорожной карты · 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. Java 21 (сентябрь 2023 года) — текущий LTS: стабильные virtual threads (Project Loom), обеспечивающие массовую Concurrency с простым блокирующим кодом, sequenced collections, record patterns и сопоставление с образцом для switch, а также string templates (preview) — всё это уже используется в Spring 6.1, Micronaut 4 и Quarkus 3.
Как это работает
Версии 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); 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 в production без коммерческой лицензии (бесплатно только не-prod с изменений 2019 — Temurin/Corretto/Liberica безопасные дефолты); пиннинг non-LTS-релиза (вынуждены обновляться каждые 6 месяцев); копирование туториалов для Java 8 (new ArrayList<Integer>() → List.of(...); лямбды изменили композицию всего). Прочтите migration notes к целевому LTS.