Новая версия Java: что вышло, что изменилось и как обновиться

Команда 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 — перед миграцией проекта стоит изучить именно их, а не пересказы в блогах.

📊 Какая версия Java установлена у вас сейчас?
Java 8 или старше
Java 11
Java 17
Java 21 или новее

Как проверить установленную версию

Проверка занимает несколько секунд и выполняется одинаково на всех операционных системах. Откройте командную строку (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 — пошагово

Выполнено: 0 / 6

Существует несколько дистрибутивов JDK от разных вендоров — Oracle JDK, OpenJDK-сборки и другие. Они построены на общей кодовой базе, но различаются условиями лицензирования и сроками поддержки. Перед установкой в коммерческой среде изучите лицензионные условия выбранного дистрибутива.

Сравнение популярных версий Java

Таблица ниже помогает сориентироваться в основных ветках платформы. Статус поддержки зависит от вендора дистрибутива, поэтому указаны общие ориентиры, а не точные даты.

ВерсияТип релизаКлючевые новшестваДля кого подходит
Java 8LTSЛямбда-выражения, Stream APIУстаревшие системы
Java 11LTSМодульность, var, HTTP ClientКонсервативный продакшен
Java 17LTSSealed-классы, pattern matchingСовременные корпоративные проекты
Java 21LTSВиртуальные потоки, 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?

Только с официальных сайтов вендоров дистрибутивов. Сторонние «сборники» и файлообменники — частый источник модифицированных или вредоносных установщиков.