Если ты начинаешь свой путь в разработке на Java или разворачиваешь Java-приложение на сервере, первый и самый важный шаг — правильно установить Java Development Kit (JDK). В этом руководстве я, как опытный DevOps, покажу тебе все способы установки Java на Ubuntu и Debian, объясню разницу между дистрибутивами и помогу избежать распространенных ошибок.
Какую версию Java выбрать?
Прежде чем перейти к установке Java на Debian или Ubuntu, давай определимся с версией. У тебя есть два основных пути:
| Дистрибутив | Плюсы | Минусы | Для кого |
|---|---|---|---|
| OpenJDK | Бесплатный, открытый исходный код, в репозиториях Ubuntu/Debian | Может отставать по версиям, меньше инструментов мониторинга | Большинство разработчиков, production-серверы |
| Oracle JDK | Официальная сборка, дополнительные коммерческие функции | Лицензия требует оплаты для коммерческого использования | Корпоративные проекты с поддержкой Oracle |
Способ 1: Установка OpenJDK из официальных репозиториев
Самый простой и рекомендуемый способ для большинства случаев. Давай разберем его по шагам.
Шаг 1: Обновление списка пакетов
Всегда начинай с обновления информации о доступных пакетах:
sudo apt update
Шаг 2: Поиск доступных версий Java
Посмотрим, какие версии OpenJDK доступны в репозиториях:
apt search openjdk | grep -E '^openjdk-[0-9]{1,2}-jdk/'
# Или для Debian/Ubuntu старых версий:
apt-cache search openjdk | grep -E 'openjdk-[0-9]{1,2}-jdk'
Шаг 3: Установка нужной версии JDK
Выбери версию в зависимости от требований проекта. Вот самые популярные варианты:
# Java 11 (LTS) - самая популярная для production
sudo apt install openjdk-11-jdk -y
# Java 17 (LTS) - текущая долгосрочная поддержка
sudo apt install openjdk-17-jdk -y
# Java 21 (LTS) - последняя LTS версия
sudo apt install openjdk-21-jdk -y
# Только JRE (без компилятора) для запуска приложений
sudo apt install openjdk-11-jre -y
Шаг 4: Проверка установки
Убедись, что Java установилась корректно:
java -version
javac -version
# Пример вывода:
# openjdk version "11.0.20" 2023-07-18
# OpenJDK Runtime Environment (build 11.0.20+8-post-Ubuntu-1ubuntu122.04)
# OpenJDK 64-Bit Server VM (build 11.0.20+8-post-Ubuntu-1ubuntu122.04, mixed mode, sharing)
Способ 2: Установка Oracle JDK
Если тебе нужна именно Oracle JDK, вот как ее установить на Ubuntu/Debian:
Шаг 1: Добавление репозитория Oracle
sudo add-apt-repository ppa:linuxuprising/java
sudo apt update
Шаг 2: Установка Oracle JDK
# Установка Oracle JDK 17
sudo apt install oracle-java17-installer -y
# Установка Oracle JDK 11
sudo apt install oracle-java11-installer -y
Способ 3: Установка через SDKMAN! (для разработчиков)
Если ты разрабатываешь на Java и часто переключаешься между версиями, SDKMAN! — твой лучший друг:
# Установка SDKMAN!
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# Просмотр доступных версий Java
sdk list java
# Установка конкретной версии
sdk install java 17.0.8-tem
sdk install java 11.0.20-tem
# Переключение между версиями
sdk use java 17.0.8-tem
# Установка версии по умолчанию
sdk default java 17.0.8-tem
Настройка переменных окружения JAVA_HOME
Многие инструменты (Maven, Gradle, Spring Boot) требуют правильной настройки JAVA_HOME. Давай настроим ее:
Автоматическое определение JAVA_HOME
# Находим путь к установленной Java
sudo update-alternatives --config java
# Копируем путь из вывода (без /bin/java)
# Пример: /usr/lib/jvm/java-11-openjdk-amd64
Настройка в ~/.bashrc или ~/.zshrc
# Открываем файл конфигурации
nano ~/.bashrc
# Добавляем в конец файла:
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
# Применяем изменения
source ~/.bashrc
# Проверяем
echo $JAVA_HOME
Глобальная настройка для всех пользователей
Для серверных установок лучше настроить глобально:
# Создаем файл конфигурации
sudo nano /etc/profile.d/java.sh
# Добавляем:
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"
# Делаем исполняемым
sudo chmod +x /etc/profile.d/java.sh
Управление несколькими версиями Java
Часто нужно иметь несколько версий Java для разных проектов. Используй update-alternatives:
# Добавляем альтернативы для java
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-11-openjdk-amd64/bin/java" 1
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/java-17-openjdk-amd64/bin/java" 2
# Добавляем альтернативы для javac
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-11-openjdk-amd64/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-17-openjdk-amd64/bin/javac" 2
# Выбор версии по умолчанию
sudo update-alternatives --config java
sudo update-alternatives --config javac
Проверка работоспособности
После завершения установки Java на Ubuntu выполни эти команды для проверки:
# Проверка версии Java
java -version
# Проверка компилятора
javac -version
# Проверка JAVA_HOME
echo $JAVA_HOME
# Простая Java-программа для теста
cat > Test.java << 'EOF'
public class Test {
public static void main(String[] args) {
System.out.println("Java работает корректно!");
System.out.println("Версия Java: " + System.getProperty("java.version"));
System.out.println("JAVA_HOME: " + System.getProperty("java.home"));
}
}
EOF
# Компиляция и запуск
javac Test.java
java Test
Удаление Java
Если нужно удалить старую версию или переустановить:
# Поиск установленных пакетов Java
dpkg -l | grep -i openjdk
dpkg -l | grep -i oracle-java
# Удаление OpenJDK
sudo apt remove openjdk-11-jdk openjdk-11-jre -y
sudo apt autoremove -y
# Удаление Oracle JDK
sudo apt remove oracle-java17-installer -y
sudo apt purge oracle-java17-installer -y
# Очистка конфигураций
sudo apt autoremove --purge -y
~/.bashrc, /etc/profile.d/ или других конфигурационных файлов.
Частые проблемы и решения
Проблема 1: «Command 'java' not found»
Решение: Убедись, что пакет установлен и путь к Java добавлен в PATH:
which java
# Если пусто, проверь установку:
dpkg -l | grep openjdk
# И добавь в PATH:
export PATH="/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH"
Проблема 2: Неверная версия Java
Решение: Используй update-alternatives для выбора версии:
sudo update-alternatives --config java
sudo update-alternatives --config javac
Проблема 3: Ошибки лицензирования Oracle JDK
Решение: Перейди на OpenJDK или прими лицензионное соглашение:
# Удалить Oracle JDK и установить OpenJDK
sudo apt remove oracle-java*-installer
sudo apt install openjdk-11-jdk
Рекомендации для production-серверов
Если ты настраиваешь сервер для production, следуй этим best practices:
- Используй LTS-версии (Java 11, 17, 21) для стабильности
- Выбирай OpenJDK для избежания лицензионных проблем
- Настрой
JAVA_OPTSдля оптимизации памяти - Используй менеджеры процессов (systemd) для управления Java-приложениями
- Регулярно обновляй Java для получения security-патчей
# Пример systemd сервиса для Java-приложения
sudo nano /etc/systemd/system/myapp.service
# Содержимое:
[Unit]
Description=My Java Application
After=network.target
[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar myapp.jar
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Часто задаваемые вопросы (FAQ)
Какая версия Java лучше для Ubuntu 22.04?
Для Ubuntu 22.04 LTS рекомендую Java 17 или Java 11. Обе версии имеют долгосрочную поддержку и хорошо интегрированы с системой. Java 17 — более современная, но Java 11 до сих пор широко используется в enterprise.
Чем отличается установка на Debian от Ubuntu?
Процесс практически идентичен. Основные отличия: версии пакетов в репозиториях могут отличаться, названия пакетов иногда имеют разные суффиксы. В Debian чаще используются стабильные, но более старые версии пакетов.
Как полностью удалить Java с системы?
Удали все Java-пакеты через apt, очисти конфигурационные файлы (apt purge), удали ручные установки из /opt или /usr/local, и очисти переменные окружения из .bashrc, .profile, /etc/profile.d/.
Почему не устанавливается Oracle JDK?
Проверь лицензионное соглашение (нужно принять в интерактивном режиме), наличие интернет-соединения для загрузки, корректность добавленного PPA-репозитория. Часто проще использовать OpenJDK.
Как автоматизировать установку Java в скриптах?
Используй non-interactive режим apt и автоматическое принятие лицензий:
export DEBIAN_FRONTEND=noninteractive
sudo apt update
sudo apt install -y openjdk-11-jdk
Заключение
Теперь ты знаешь все основные способы установки Java на Ubuntu и Debian. Давай резюмируем:
- Для большинства случаев используй OpenJDK из официальных репозиториев
- Выбирай LTS-версии (11, 17, 21) для стабильности
- Настрой
JAVA_HOMEдля работы инструментов сборки - Для разработки с несколькими версиями используй SDKMAN!
- В production отдавай предпочтение OpenJDK
Помни: правильная установка Java — фундамент для стабильной работы твоих приложений. Если возникнут вопросы — возвращайся к этому руководству или проверь официальную документацию.