Установка Java на Ubuntu/Debian: JDK, OpenJDK, Oracle Java | AdminWiki

Установка Java на Ubuntu и Debian: Подробное руководство для разработчиков

18 декабря 2025 9 мин. чтения #debian #devops #java #jdk #linux #openjdk #ubuntu #установка java
Содержание статьи

Если ты начинаешь свой путь в разработке на Java или разворачиваешь Java-приложение на сервере, первый и самый важный шаг — правильно установить Java Development Kit (JDK). В этом руководстве я, как опытный DevOps, покажу тебе все способы установки Java на Ubuntu и Debian, объясню разницу между дистрибутивами и помогу избежать распространенных ошибок.

Важно: Ubuntu основан на Debian, поэтому большинство инструкций для Ubuntu полностью применимы и для Debian. Различия в версиях пакетов и названиях репозиториев я обязательно отмечу.

Какую версию Java выбрать?

Прежде чем перейти к установке Java на Debian или Ubuntu, давай определимся с версией. У тебя есть два основных пути:

Дистрибутив Плюсы Минусы Для кого
OpenJDK Бесплатный, открытый исходный код, в репозиториях Ubuntu/Debian Может отставать по версиям, меньше инструментов мониторинга Большинство разработчиков, production-серверы
Oracle JDK Официальная сборка, дополнительные коммерческие функции Лицензия требует оплаты для коммерческого использования Корпоративные проекты с поддержкой Oracle

Способ 1: Установка OpenJDK из официальных репозиториев

Самый простой и рекомендуемый способ для большинства случаев. Давай разберем его по шагам.

Шаг 1: Обновление списка пакетов

Всегда начинай с обновления информации о доступных пакетах:

bash
sudo apt update

Шаг 2: Поиск доступных версий Java

Посмотрим, какие версии OpenJDK доступны в репозиториях:

bash
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

Выбери версию в зависимости от требований проекта. Вот самые популярные варианты:

bash
# 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
Внимание: В старых версиях Debian (например, Debian 10) может не быть свежих версий OpenJDK. В таком случае используй репозитории от Adoptium или устанавливай вручную.

Шаг 4: Проверка установки

Убедись, что Java установилась корректно:

bash
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

bash
sudo add-apt-repository ppa:linuxuprising/java
sudo apt update

Шаг 2: Установка Oracle JDK

bash
# Установка Oracle JDK 17
sudo apt install oracle-java17-installer -y

# Установка Oracle JDK 11
sudo apt install oracle-java11-installer -y
Лицензионное предупреждение: Oracle JDK требует принятия лицензионного соглашения и может потребовать оплаты для коммерческого использования в production. Для большинства случаев OpenJDK — лучший выбор.

Способ 3: Установка через SDKMAN! (для разработчиков)

Если ты разрабатываешь на Java и часто переключаешься между версиями, SDKMAN! — твой лучший друг:

bash
# Установка 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

bash
# Находим путь к установленной Java
sudo update-alternatives --config java

# Копируем путь из вывода (без /bin/java)
# Пример: /usr/lib/jvm/java-11-openjdk-amd64

Настройка в ~/.bashrc или ~/.zshrc

bash
# Открываем файл конфигурации
nano ~/.bashrc

# Добавляем в конец файла:
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
export PATH="$JAVA_HOME/bin:$PATH"

# Применяем изменения
source ~/.bashrc

# Проверяем
echo $JAVA_HOME

Глобальная настройка для всех пользователей

Для серверных установок лучше настроить глобально:

bash
# Создаем файл конфигурации
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:

bash
# Добавляем альтернативы для 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 выполни эти команды для проверки:

bash
# Проверка версии 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

Если нужно удалить старую версию или переустановить:

bash
# Поиск установленных пакетов 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:

bash
which java
# Если пусто, проверь установку:
dpkg -l | grep openjdk
# И добавь в PATH:
export PATH="/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH"

Проблема 2: Неверная версия Java

Решение: Используй update-alternatives для выбора версии:

bash
sudo update-alternatives --config java
sudo update-alternatives --config javac

Проблема 3: Ошибки лицензирования Oracle JDK

Решение: Перейди на OpenJDK или прими лицензионное соглашение:

bash
# Удалить 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-патчей
bash
# Пример 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 и автоматическое принятие лицензий:

bash
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 — фундамент для стабильной работы твоих приложений. Если возникнут вопросы — возвращайся к этому руководству или проверь официальную документацию.

Поделиться:
Сохранить гайд? В закладки браузера