Ubuntu 18.04 安装 OpenJDK 11

OpenJDK 11于 2018年9月25日 发布 。由于这是版本8之后的第一个LTS版本,因此期待已久。 在 Ubuntu 18.04(Bionic Beaver)上安装了该软件包后,该软件包附带了一个名为 openjdk-11-jdk的软件包,令我惊讶的是它仍然是早期版本(Java 10)。

OpenJDK的SRU例外

Ubuntu Foundation团队为OpenJDK设置了SRU例外 。 Altought版本10是非LTS版本,他们将其打包为openjdk-11-jdk直到OpenJDK 11正式发布。 该选择基于以下假设:版本10和版本11之间的接口增量要比版本8和11之间的接口增量小得多。

这是一个很好的推论,也许当OpenJDK的版本从10猛增到11时, apt-get upgrade并不会把事情搞砸。

尽管有一个很小的区域,但是10和11之间有很大的不同,这就是Flight Recorder同时是开源的。 OpenJDK 10不包含飞行记录器,因为那时它是Oracle JDK的商业功能,但OpenJDK 11确实随附了它。

结果,安装openjdk-11-jdk不允许使用JFR来检测应用程序,因为用于启用它的JVM选项根本无法被OpenJDK 10识别。 实际上,JVM无法启动,并抱怨无法识别的选项。

安装Ubuntu的默认JDK

这很简单,您只需要以下软件包。

% apt-get install default-jdk

但是,请检查实际安装的Java版本。

$ 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

这也很容易,您只需要下载一个tarball并将其解压缩到某个位置即可。

% 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

$ /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之间轻松切换。

% 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中 ,将只是软件包升级和使用它的替代选择的问题。

% 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  to keep the current choice[*], or type selection number:

翻译自: https://www.javacodegeeks.com/2018/12/installing-openjdk-11-ubuntu-18-04.html

你可能感兴趣的:(java,jdk,linux,python,docker)