Обновление Java¶
Обновление Java — это процесс установки более новой версии платформы Java (или обновления существующей установки до актуального патча) с целью получить исправления безопасности, новые функции и улучшения производительности. Платформа распространяется компанией Oracle (коммерческие сборки Oracle JDK) и сообществом (открытые сборки OpenJDK, в том числе дистрибутивы Temurin от Eclipse Adoptium, Amazon Corretto, Microsoft Build of OpenJDK, Zulu от Azul Systems).
¶Способы обновления
¶Автоматическое обновление (Oracle JDK)
Oracle JDK, начиная с версии 8u202 и особенно в актуальных релизах, поддерживает встроенный механизм автообновления:
- Windows: в комплект входит служба Java Update, которая периодически проверяет наличие новых патчей и предлагает установить их через уведомление в трее. Настройки доступны в панели управления Java (Java Control Panel) на вкладке «Обновления» (Update).
- macOS: аналогичный механизм встроен в панель Java; обновления распространяются через системный установщик.
- Linux: Oracle JDK не предоставляет встроенного автообновления; обновление выполняется вручную или через пакетный менеджер.
¶Обновление через пакетный менеджер (Linux)
На дистрибутивах Linux Java обычно устанавливается и обновляется штатными средствами:
```bash
¶Debian / Ubuntu
sudo apt update && sudo apt upgrade openjdk-21-jdk
¶RHEL / CentOS / Fedora
sudo dnf update java-21-openjdk-devel ```
При необходимости установки конкретной версии можно использовать альтернативные репозитории, например, Adoptium (Eclipse Temurin) через apt или dnf, или инструмент управления версиями sdkman.
¶Ручное обновление (Windows, macOS)
- Удалить старую версию через «Установка и удаление программ» (Windows) или «Программы» в настройках системы (macOS).
- Скачать актуальный JDK или JRE с официального сайта Oracle или с сайта проекта OpenJDK-дистрибутива (например, adoptium.net).
- Запустить установщик и следовать инструкциям.
- Проверить переменную окружения
JAVA_HOMEи порядок вPATH, чтобы система подхватила новую версию.
¶Управление несколькими версиями
Для одновременного использования нескольких версий Java применяются специальные инструменты:
- sdkman — менеджер версий для Linux/macOS, позволяет устанавливать и переключать JDK одной командой (
sdk install java 21-tem,sdk use java 21-tem). - jEnv — менеджер версий Java для Linux/macOS.
- Chocolatey (Windows):
choco install temurinи далееchoco upgrade temurin. - Scoop (Windows):
scoop update java. - Homebrew (macOS):
brew update && brew upgrade openjdk.
¶Что обновляется: JRE и JDK
Стоит различать два пакета:
- JRE (Java Runtime Environment) — среда выполнения для запуска приложений. Начиная с Java 11, отдельный JRE Oracle официально не распространяет; вместо него предлагается «jlink» для создания компактных рантаймов.
- JDK (Java Development Kit) — полный комплект для разработки, включает JRE, компилятор javac, отладчик и утилиты.
Обновление JDK автоматически обновляет и встроенную среду выполнения.
¶Версии с длительной поддержкой (LTS)
Для серверов и корпоративных систем рекомендуется использовать LTS-версии (Long-Term Support), которые получают патчи безопасности дольше обычных:
| Версия | Статус поддержки Oracle |
|---|---|
| Java 8 (2014) | Расширенная поддержка до 2030 (по подписке) |
| Java 11 (2018) | Расширенная поддержка до 2032 (по подписке) |
| Java 17 (2021) | Расширенная поддержка до 2029 (по подписке) |
| Java 21 (2023) | Расширенная поддержка до 2031 (по подписке) |
OpenJDK-дистрибутивы (Temurin, Corretto, Zulu) предоставляют бесплатные обновления LTS-версий в течение поддерживаемого срока.
¶Проверка текущей версии
Для определения установленной версии выполняется команда:
``bash java -version ``
Команда выводит версию рантайма, сборку и (для Oracle JDK) тип лицензии. Для JDK дополнительно проверяется версия компилятора:
``bash javac -version ``
¶Рекомендации по безопасности
Релизы Java выходят по циклу «one plus three back»: в марте и сентябре выходит новый feature-релиз, а предыдущие три LTS-ветки получают патчи безопасности. Рекомендуется применять обновления не реже раза в квартал, особенно для серверных систем, работающих в интернете. Критические уязвимости (CVSS 9.0+) публикуются в бюллетенях Oracle Critical Patch Update, выходящих в январе, апреле, июле и октябре.
¶Проблемы при обновлении
Типичные сложности:
- Конфликт версий: старые приложения могут не работать на новых версиях из-за удаления устаревших API (например, удаление Java EE модулей в Java 11, сильные инкапсуляции внутренних API с Java 16).
- Переменная JAVA_HOME: после установки новой версии необходимо обновить путь в переменных окружения.
- Кэш браузера: для Java-апплетов (исторически) требовалось обновление плагина в браузере.
Источники:
- Документация Oracle Java SE Support Roadmap
- Сайт Eclipse Adoptium (Eclipse Temurin)
- Документация Amazon Corretto
- Руководство по установке Azul Zulu
- Бюллетени Oracle Critical Patch Update Advisory
