Ubuntu Linux 18.04 LTSで、やっと本当に(※)OpenJDK 11が使えるようになったみたいなので、インストールしたいと思います。
※後述
環境。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.2 LTS Release: 18.04 Codename: bionic
インストールは、「openjdk-11-jdk」を指定。
$ sudo apt install openjdk-11-jdk
GUIなどが不要であれば、「openjdk-11-jdk-headless」で。
$ sudo apt install openjdk-11-jdk-headless
確認。
$ java -version openjdk version "11.0.2" 2019-01-15 OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3) OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing) $ javac -version javac 11.0.2
OpenJDK 8なども入れている場合、切り替えは「update-alternatives」で。javaコマンドの場合。
$ sudo update-alternatives --config java alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自動モード 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手動モード 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:
javacコマンドの場合。
$ sudo update-alternatives --config javac alternative javac (/usr/bin/javac を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 自動モード 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 手動モード 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:
簡単に確認してみましょう。
$ mvn -v Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T04:00:29+09:00) Maven home: $HOME/.sdkman/candidates/maven/current Java version: 11.0.2, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-11-openjdk-amd64 Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "4.15.0-47-generic", arch: "amd64", family: "unix"
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.littlewings.example</groupId> <artifactId>hello-java11</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> </project>
用意したサンプルプログラム。
src/main/java/org/littlewings/example/App.java
package org.littlewings.example; public class App { public static void main(String... args) { var message = "Hello World!!"; System.out.println(message); } }
実行。
$ mvn compile exec:java -Dexec.mainClass=org.littlewings.example.App [INFO] Scanning for projects... [INFO] [INFO] ----------------< org.littlewings.example:hello-java11 >---------------- [INFO] Building hello-java11 0.0.1-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ hello-java11 --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ hello-java11 --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to /path/to/hello-java11/target/classes [INFO] [INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ hello-java11 --- Hello World!! [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.244 s [INFO] Finished at: 2019-04-20T17:44:09+09:00 [INFO] ------------------------------------------------------------------------
できました、と。
本当にOpenJDK 11が使えるようになった?
Ubuntu Linux 18.04 LTSのリリース時には、OpenJDK 11がまだリリースされておらず、できればLTS相当の11を使いたい
Ubuntu LinuxのLTSではちょっといろいろとありました。
Ubuntu Linux 18.04 LTSのリリース時には、「openjdk-11-jdk」を指定してインストールすると実際にはOpenJDK 10が
インストールされる状態とし、OpenJDK 11のリリース後に差し替える予定だったようです。
それが、ようやく行われた、という話でした。