Статьи

Установка OpenJDK 11 на Ubuntu 18.04 для реального

OpenJDK 11 был выпущен 25 сентября 1018 года. Поскольку это первый выпуск LTS после 8-й версии, его долго ждали. После его установки на Ubuntu 18.04 (Bionic Beaver) , который поставляется с пакетом с именем openjdk-11-jdk , к моему удивлению, это была еще более ранняя версия (Java 10).

SRU исключение для OpenJDK

Команда разработчиков Ubuntu сделала исключение SRU для OpenJDK . Версия 10 Altought не является выпуском LTS, они упаковывали ее как openjdk-11-jdk пока OpenJDK 11 не выйдет в GA. Этот выбор был основан на том предположении, что между выпусками 10 и 11 существует гораздо меньшая дельта интерфейса, чем между 8 и 11.

Это довольно веские аргументы, и, возможно, apt-get upgrade не будет так плохо, когда версия OpenJDK будет увеличена с 10 до 11.

Хотя есть одна крошечная область, в которой есть существенная разница между 10 и 11, и это то, что тем временем Flight Recorder был открыт . OpenJDK 10 не содержит регистратора полетов, так как в то время это была коммерческая функция Oracle JDK , но OpenJDK 11 поставляется с ним.

Как следствие, установка openjdk-11-jdk не позволяет инструментам оснащаться JFR, поскольку опции JVM, используемые для его включения, просто не распознаются OpenJDK 10 . Фактически, JVM не запускается и жалуется на нераспознанные опции.

Установка JDK по умолчанию в Ubuntu

Это очень просто, вам просто нужен следующий пакет.

1
% apt-get install default-jdk

Тем не менее, проверьте, какая версия Java действительно устанавливается.

1
2
3
4
$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)

Установка OpenJDK вручную

Это тоже просто, вам просто нужно скачать тарбол и распаковать его куда-нибудь.

1
2
3
% wget https://download.java.net/java/GA/jdk11/28/GPL/openjdk-11+28_linux-x64_bin.tar.gz -O /tmp/openjdk-11+28_linux-x64_bin.tar.gz
% sudo tar xfvz /tmp/openjdk-11+28_linux-x64_bin.tar.gz --directory /usr/lib/jvm
% rm -f /tmp/openjdk-11+28_linux-x64_bin.tar.gz

Это будет OpenJDK 11 по-настоящему.

1
2
3
4
$ /usr/lib/jvm/jdk-11/bin/java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

Переключение между JDK

Я бы предпочел использовать JDK дистрибутива, пока он работает для поставленной задачи. В этом случае это не вариант, по крайней мере пока. По этой причине я использую альтернативную инфраструктуру, с помощью которой можно легко переключаться между JDK.

1
2
% sudo sh -c 'for bin in /usr/lib/jvm/jdk-11/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done'
% sudo sh -c 'for bin in /usr/lib/jvm/jdk-11/bin/*; do update-alternatives --set $(basename $bin) $bin; done'

Как только OpenJDK 11 появится в Ubuntu 18.04 , это будет всего лишь вопрос обновления пакета и переключения альтернатив для его использования.

01
02
03
04
05
06
07
08
09
10
11
% sudo apt-get install --only-upgrade default-jdk
% update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
 
  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      manual mode
* 2            /usr/lib/jvm/jdk-11/bin/java                  100       manual mode
 
Press <enter> to keep the current choice[*], or type selection number:
Смотрите оригинальную статью здесь: Установка OpenJDK 11 на Ubuntu 18.04 для реального

Мнения, высказанные участниками Java Code Geeks, являются их собственными.