9月25日にJDK 11がリリースされました。リリースサイクルも変わり、今後は半年サイクルで新しいバージョンが出てきます。「Javaが有償化される」という間違った情報が一人歩きしているようですが…それは誤った情報なので、以下辺りをご確認ください。
- JDK: 新しいリリースモデル解説(ver.2.1)
- [Introduction to Java 11: Support and JVM Features #jjug](https://www.slideshare.net/YujiKubota/introduction-to-- java-11-support-and-jvm-features)
- 【GlassFish勉強会レポート】各JDKベンダの動向を知ってJava 11に備えよう
- Javaのサポートについてのまとめ
異なるJDK、異なるバージョンを触る機会が今後増えそうですが、それぞれインストールしたり、設定したりするのは大変です。ちなみに今自分がメインで使っているPCは、OpenJDK 11を入れていますが、binのPathやJAVA_HOMEはOracle JDK 8のままだったりします(^^;
そんなときは、やはりDockerがいいのかな、ということで、Docker HubにあるJDKを調べて実際に動かしてみました。
動作確認に使ったコードは以下です。環境はDocker Comminitu Edition 18.0.6.1-ce-win73で確認しました。
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!!");
System.out.println(System.getProperty("java.version"));
System.out.println(System.getProperty("java.vendor"));
System.out.println(System.getProperty("java.vm.name"));
}
}
なお、一通り試した後に気づいたのですが、「最適な Java の Docker イメージを選びたい」でそれぞれの特徴など細かくまとまっています。本記事は単純に実行方法と結果のみまとめています。実行で指定したバージョンは必ずしも最新ではないので、詳細はDocker Hubのリンク先をご確認ください。
OpenJDK
docker run -v C:\Docker:/tmp -w /tmp openjdk:11-jdk javac HelloWorld.java
docker run -v C:\Docker:/tmp -w /tmp openjdk:11-jdk java HelloWorld
Hello World!!
11
Oracle Corporation
OpenJDK 64-Bit Server VM
以下のような注意点があるようです。
DockerコミュニティがメンテしているOpenJDKイメージを使って遭遇した問題
AdoptOpenJDK
docker run -v C:\Docker:/tmp -w /tmp adoptopenjdk/openjdk11:latest javac HelloWorld.java
docker run -v C:\Docker:/tmp -w /tmp adoptopenjdk/openjdk11:latest java HelloWorld
Hello World!!
11
Oracle Corporation
OpenJDK 64-Bit Server VM
Zulu
docker run -v C:\Docker:/tmp -w /tmp azul/zulu-openjdk javac HelloWorld.java
docker run -v C:\Docker:/tmp -w /tmp azul/zulu-openjdk java HelloWorld
Hello World!!
1.8.0_181
Azul Systems, Inc.
OpenJDK 64-Bit Server VM
IBM
docker run -v C:\Docker:/tmp -w /tmp ibmjava:sdk-alpine javac HelloWorld.java
docker run -v C:\Docker:/tmp -w /tmp ibmjava:sdk-alpine java HelloWorld
Hello World!!
1.8.0_181
IBM Corporation
IBM J9 VM
おまけ
Oracle JDKについては、JREがDocker Storeにあって、イメージが利用できるようです。9以降ないのかな…?
DockerはMicrosoft Learnが勉強になりました。
コンテナ系だいぶ出遅れててDockerあまりちゃんと触ってなかったので連休を使って勉強中。色んなサイトみたけど、Microsoft Learnの「コンテナーの概要」がいいなー。コンソールで手を動かしながらできるのが、やはり良い。 https://t.co/nyq75nYbWG pic.twitter.com/a67wsyZXFV
— キクタロー@エバスク役職超ボッター (@kikutaro_) 2018年10月8日