Java и JVM (Java virtual machine) – очень широко распространённое и востребованное программное обеспечение (к примеру, оно необходимо для работы Tomcat, Jetty, Glassfish, Cassandra и Jenkins).
В этом мануале вы научитесь устанавливать различные версии Java Runtime Environment (JRE) и Java Developer Kit (JDK) с помощью apt. Вы установите OpenJDK, а также официальные пакеты из Oracle. Также вы научитесь выбирать версию по умолчанию. После этого вы сможете использовать JDK для разработки или Java Runtime для запуска программного обеспечения.
Требования
Для работы вам нужен сервер Debian 9, настроенный согласно этому мануалу.
Установка стандартной версии JRE/JDK
Проще всего использовать стандартную версию Java, которая поставляется вместе с Debian. По умолчанию вместе с Debian 9 идет Open JDK, открытая версия JRE и JDK.
Этот пакет установит версию OpenJDK 1.8, совместимую с Java 8, текущей версией Long Term Support, которая по-прежнему широко поддерживается, хотя ее поддержка заканчивается в январе 2019 года.
Чтобы установить эту версию, сначала обновите индекс пакетов:
sudo apt update
А затем запросите версию Java (чтобы уточнить, установлена ли Java):
java -version
Если на вашем сервере нет Java, вы увидите такой вывод:
-bash: java: command not found
Выполните эту команду, чтобы установить OpenJDK:
sudo apt install default-jre
Эта команда установит Java Runtime Environment (JRE), что позволит вам запускать почти все программы Java.
Запросите версию:
java -version
Вы увидите такой результат:
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
В дополнение к JRE вам может понадобиться Java Development Kit (JDK), чтобы скомпилировать и запустить определенное программное обеспечение на базе Java. Чтобы установить JDK, выполните следующую команду, которая также установит и JRE:
sudo apt install default-jdk
Убедитесь, что JDK установлен, проверив версию javac, компилятора Java:
javac -version
Вы увидите следующий результат:
javac 1.8.0_181
Установка Oracle JDK
Если вы хотите установить Oracle JDK, официальную версию от Oracle, вам нужно добавить новый репозиторий пакетов той версии, которую вы хотите использовать.
Сначала установите пакет software-properties-common, который добавляет команду apt-get-repository – она нужна для добавления дополнительных репозиториев в список источников.
sudo apt install software-properties-common
Установка Oracle Java 8
Чтобы установить OpenJDK 8, сначала добавьте ее репозиторий:
sudo add-apt-repository ppa:webupd8team/java
После добавления репозитория вы увидите сообщение:
Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK8). There are no actual Java files in this PPA.
Important -> Why Oracle Java 7 And 6 Installers No Longer Work: http://www.webupd8.org/2017/06/why-oracle-java-7-and-6-installers-no.html
Update: Oracle Java 9 has reached end of life: http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
The PPA supports Ubuntu 18.04, 17.10, 16.04, 14.04 and 12.04.
More info (and Ubuntu installation instructions):
- for Oracle Java 8: http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html
Debian installation instructions:
- Oracle Java 8: http://www.webupd8.org/2014/03/how-to-install-oracle-java-8-in-debian.html
For Oracle Java 10, see a different PPA: https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html
More info: https://launchpad.net/~webupd8team/+archive/ubuntu/java
Press [ENTER] to continue or ctrl-c to cancel adding it
Нажмите ENTER, чтобы продолжить. Далее система попробует импортировать ключи GPG, но не сможет найти валидные.
gpg: keybox '/tmp/tmpgt9wdvth/pubring.gpg' created
gpg: /tmp/tmpgt9wdvth/trustdb.gpg: trustdb created
gpg: key C2518248EEA14886: public key "Launchpad VLC" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
gpg: no valid OpenPGP data found.
Чтобы добавить GPG-ключи вручную, выполните следующую команду:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C2518248EEA14886
Обновите индекс пакетов:
sudo apt update
Установите Java 8:
sudo apt install oracle-java8-installer
Система загрузит JDK и предложит вам принять лицензию. После этого версия JDK будет установлена.
Установка Oracle Java 10
Сначала добавьте репозиторий пакетов для Oracle Java 10.
sudo add-apt-repository ppa:linuxuprising/java
Oracle Java 10 installer
Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java 10 (JDK 10), so a working Internet connection is required.
The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java
Created for users of https://www.linuxuprising.com/
Issues or suggestions? Leave a comment here: https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html
More info: https://launchpad.net/~linuxuprising/+archive/ubuntu/java
Press [ENTER] to continue or ctrl-c to cancel adding it
Нажмите ENTER, чтобы продолжить. Как и с Java 8, вы увидите сообщение о невалидных ключах.
gpg: keybox '/tmp/tmpvuqsh9ui/pubring.gpg' created
gpg: /tmp/tmpvuqsh9ui/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no valid OpenPGP data found.
Импортируйте необходимые ключи.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A
Обновите индекс пакетов:
sudo apt update
Установите Java 10:
sudo apt install oracle-java10-installer
Система загрузит Oracle JDK и предложит вам принять лицензию. После этого версия JDK будет установлена.
Управление Java
На одном сервере может одновременно находиться несколько установок Java. Вы можете выбрать версию Java, которая будет использоваться системой по умолчанию. Для этого существует команда update-alternatives.
sudo update-alternatives --config java
Команда вернёт примерно такой вывод (в данном случае показан вывод команды после установки всех вышеперечисленных версий):
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
-------------------------------------------------------------------------------------
0 /usr/lib/jvm/java-10-oracle/bin/java 1091 auto mode
* 1 /usr/lib/jvm/java-10-oracle/bin/java 1091 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Теперь можно выбрать номер версии, которая будет использоваться по умолчанию, и нажмите Enter. Подобным образом можно настроить и другие команды Java, например, компилятор (javac).
sudo update-alternatives --config javac
Также эта команда работает для keytool, javadoc, jarsigner и т.п.
Переменная JAVA_HOME
Многие программы используют переменную среды JAVA_HOME, чтобы определить место установки Java. Чтобы установить эту переменную, нужно сначала узнать, где именно хранится установка Java. Для этого используется эта команда:
sudo update-alternatives --config java
Команда покажет все установки Java и путь их установки:
Selection Path Priority Status
--------------------------------------------------------------------------------
0 /usr/lib/jvm/java-10-oracle/bin/java 1091 auto mode
* 1 /usr/lib/jvm/java-10-oracle/bin/java 1091 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
3 /usr/lib/jvm/java-8-oracle/jre/bin/java 1081 manual mode
В данном случае у установок такие пути:
- Oracle Java 10: /usr/lib/jvm/java-10-oracle/jre/bin/java.
- Oracle Java 8: /usr/lib/jvm/java-8-oracle/jre/bin/java.
- OpenJDK 8: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java.
Скопируйте путь необходимой версии программы и откройте /etc/environment в текстовом редакторе:
sudo nano /etc/environment
Добавьте следующую строку в конец файла (замените условный путь к программе только что скопированным путём):
JAVA_HOME="/usr/lib/jvm/java-8-oracle/jre"
При изменении этого файла путь JAVA_HOME будет установлен для всех пользователей вашей системы. Сохраните и закройте файл. Чтобы обновить настройки, введите:
source /etc/environment
Убедитесь, что переменная среды установлена. Для этого введите:
echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle/jre
Команда должна вернуть установленный вами путь.
Заключение
Теперь вы знаете, как установить несколько версий Java и выбрать версию по умолчанию. Установите несколько программ, основанных на Java, например, Tomcat, Jetty, Glassfish, Cassandra или Jenkins.