Команда java -version в терминале показывает, какая сборка платформы установлена у вас прямо сейчас — и именно с этой проверки стоит начинать любой разговор о новой версии Java. Если вывод показывает, например, 1.8.0 или 11, значит, система работает на устаревшей ветке, а актуальные релизы уже ушли далеко вперёд.
Java развивается по шестимесячному циклу: новая функциональная версия выходит каждые полгода, а раз в два года публикуется LTS-релиз (Long-Term Support) с длительной поддержкой. К числу LTS-версий относятся Java 8, 11, 17 и 21; промежуточные выпуски получают обновления только до выхода следующего. Понимание этого графика помогает осознанно выбирать, на какую версию переходить.
Как устроен график выхода новых версий Java
С 2017 года платформа перешла на ускоренную модель релизов: вместо редких крупных обновлений нововведения поставляются небольшими порциями дважды в год — обычно в марте и сентябре. Каждый релиз получает порядковый номер: 17, 18, 19 и так далее. Функции, которые не успевают к стабилизации, включаются в режиме preview или incubator и дорабатываются в следующих выпусках.
LTS-версии — это ориентир для промышленной разработки. Именно их чаще всего требуют корпоративные приложения, серверы и банковское ПО. Промежуточные релизы подходят для экспериментов и изучения новых возможностей языка, но их поддержка заканчивается быстро.
- 🗓️ Функциональные релизы — выходят каждые полгода, поддержка ограничена.
- 🛡️ LTS-релизы — длительная поддержка, рекомендуются для продакшена.
- 🧪 Preview-функции — доступны для тестирования, но могут измениться.
- 🔢 Нумерация — простая последовательная, без маркетинговых названий.
Что нового появилось в последних версиях
Начиная с Java 17 и далее, язык заметно изменился. Появились records — компактные классы для хранения данных без шаблонного кода, sealed-классы для контроля иерархий наследования и улучшенный pattern matching в операторе switch. Виртуальные потоки (virtual threads), ставшие стабильной частью платформы, упростили написание высоконагруженных многопоточных приложений.
Каждый следующий релиз добавляет улучшения производительности сборщика мусора, оптимизации JVM и новые API. Точный перечень изменений конкретной версии всегда опубликован в официальных release notes — перед миграцией проекта стоит изучить именно их, а не пересказы в блогах.
Как проверить установленную версию
Проверка занимает несколько секунд и выполняется одинаково на всех операционных системах. Откройте командную строку (cmd в Windows, Terminal в macOS и Linux) и выполните:
java -version
В выводе вы увидите номер версии и сборку. Если команда не распознаётся, вероятны две ситуации: Java не установлена вовсе либо путь к ней не прописан в переменной окружения PATH. Дополнительно полезно проверить переменную JAVA_HOME — многие инструменты сборки ориентируются именно на неё.
echo %JAVA_HOME% :: Windows
echo $JAVA_HOME # Linux и macOS
⚠️ Внимание: на одном компьютере могут сосуществовать несколько версий Java. Командаjava -versionпоказывает лишь ту, что стоит первой вPATH, а приложения могут использовать другую через собственные настройки.
Как обновить Java до новой версии
Порядок обновления зависит от того, что именно вам нужно: полноценный JDK (Java Development Kit) для разработки или среда исполнения для запуска готовых программ. Современные сборки чаще всего распространяются как JDK — отдельная JRE как самостоятельный продукт фактически ушла в прошлое.
Общий безопасный порядок действий выглядит так:
☑️ Обновление Java — пошагово
Существует несколько дистрибутивов JDK от разных вендоров — Oracle JDK, OpenJDK-сборки и другие. Они построены на общей кодовой базе, но различаются условиями лицензирования и сроками поддержки. Перед установкой в коммерческой среде изучите лицензионные условия выбранного дистрибутива.
Сравнение популярных версий Java
Таблица ниже помогает сориентироваться в основных ветках платформы. Статус поддержки зависит от вендора дистрибутива, поэтому указаны общие ориентиры, а не точные даты.
| Версия | Тип релиза | Ключевые новшества | Для кого подходит |
|---|---|---|---|
| Java 8 | LTS | Лямбда-выражения, Stream API | Устаревшие системы |
| Java 11 | LTS | Модульность, var, HTTP Client | Консервативный продакшен |
| Java 17 | LTS | Sealed-классы, pattern matching | Современные корпоративные проекты |
| Java 21 | LTS | Виртуальные потоки, record patterns | Новые проекты с долгой поддержкой |
| Новейший релиз | Функциональный | Актуальные нововведения языка | Эксперименты и обучение |
Обратите внимание: миграция с Java 8 на современные версии может потребовать доработки кода — между ними произошло удаление ряда устаревших API и изменение модульной системы. Переход между соседними LTS-версиями обычно проходит заметно проще.
Возможные проблемы после обновления
Не всегда установка новой версии проходит гладко. Типичная ситуация — приложение перестаёт запускаться или выдаёт ошибку совместимости. Возможные причины: программа собрана под конкретную версию байткода, использует удалённые API или опирается на старую переменную JAVA_HOME.
- 🧩 Ошибка UnsupportedClassVersionError — приложение собрано под более новую версию, чем запущенная.
- 🔧 Конфликт переменных окружения —
PATHуказывает на старую установку. - 📦 Удалённые API — код использует компоненты, исключённые из новых релизов.
- 🖥️ Настройки IDE — среда разработки продолжает использовать старый SDK.
⚠️ Внимание: если критичное рабочее приложение требует конкретную старую версию Java, не удаляйте её ради обновления. Настройте параллельную установку и укажите каждой программе свой путь к исполняемым файлам.
Зачем вообще обновляться, если всё работает
Новые версии получают исправления уязвимостей и улучшения производительности JVM. Старые ветки со временем перестают получать патчи безопасности, что создаёт риски, особенно для серверных приложений.
Какую версию выбрать: краткие рекомендации
Для обычного пользователя, которому Java нужна для запуска сторонней программы, ориентир простой: ставьте версию, которую требует сама программа. Эта информация обычно указана в документации приложения или на странице загрузки.
Разработчику же имеет смысл строить новые проекты на актуальной LTS-версии, а переход на следующую LTS планировать после изучения официального списка изменений. Слепое обновление «до самой новой» без тестирования — частый источник неожиданных сбоев в продакшене.
Часто задаваемые вопросы
Чем JDK отличается от JRE?
JDK (Java Development Kit) — полный комплект для разработки, включающий компилятор и инструменты. JRE — только среда исполнения для запуска готовых программ. В современных версиях отдельная JRE практически не распространяется, устанавливается JDK.
Можно ли держать несколько версий Java одновременно?
Да, это нормальная практика. Нужно лишь корректно настроить переменные окружения и, при необходимости, указать конкретным приложениям путь к требуемой версии.
Как узнать, какую версию требует программа?
Обычно это указано в документации или на странице загрузки приложения. Если программа не запускается, текст ошибки (например, UnsupportedClassVersionError) тоже подсказывает несоответствие версий.
Обязательно ли переходить на каждый новый релиз?
Нет. Промежуточные версии имеют короткий цикл поддержки, поэтому большинству пользователей и команд достаточно обновляться между LTS-релизами, не пропуская патчи безопасности внутри своей ветки.
Где безопасно скачивать Java?
Только с официальных сайтов вендоров дистрибутивов. Сторонние «сборники» и файлообменники — частый источник модифицированных или вредоносных установщиков.