2017年10月10日火曜日

メモ: OpenJDK 関連 - 2017/10/10現在

OpenJDK

http://openjdk.java.net/


OpenJ9

https://www.eclipse.org/openj9/index.html

参考: NOT OpenJDK

Java Development Kit builds, from Oracle
http://jdk.java.net/

ライフサイクルなど

OpenJDK ライフサイクルおよびサポートポリシー

by Redhat
https://access.redhat.com/ja/node/1457743

"このナレッジでは、Red Hat Enterprise Linux (RHEL) に同梱される OpenJDK のライフサイクルとサポートポリシーについて説明します。ここで説明される内容は、Sun、Oracle、または IBM から提供されている Java ランタイムまたは JDK の実装には適用されません。"

"メジャーバージョンの OpenJDK のサポート終了日は、RHEL の各バージョンで最初に導入されてから 6 年、もしくは基本 RHEL プラットフォームが終了した日のいずれか早い方が採用されます。"

サポート終了日
OpenJDK 6 (1.6) 2016/12
OpenJDK 7 (1.7) 2018/6
OpenJDK 8 (1.8) 2020/10

Red Hat JVM/JDK Summary
https://access.redhat.com/articles/2950741


Zulu OpenJDK Builds, 100% Open Source Java SE -- Free to download and use

by Azul Systems
https://www.azul.com/products/zulu-and-zulu-enterprise/

Redhatが自社サポート終了日にあわせてOpenJDK 6のメンテナンスをやめるときに、引き継ぎするかどうかの話題が出てた。
http://mail.openjdk.java.net/pipermail/jdk6-dev/2016-December/003611.html

Versions
Java 9, 8, 7, and 6 (See download page for details)

Supported Platforms
Windows, Linux, MacOS, Cloud on Azure and AWS (See download page for details)

Zulu Enterprise
"Enterprise-grade support with 10 year support lifetime, and our Java experts can help you resolve issues quickly"

OpenJDKがGPLなので、Zuluのメンテ期間中は基本的に公開されるのではないか。
OpenJDK: GPLv2 + Classpath Exception
http://openjdk.java.net/legal/gplv2+ce.html
GPLリンク例外 by wikipedia


OpenJDKバイナリ配布

AdoptOpenJDK

https://adoptopenjdk.net/index.html

Build jdk8u144-b01
OpenJDK8 with HotSpot

Build jdk-9+181
OpenJDK9 with HotSpot
OpenJDK9 with Eclipse OpenJ9


Download Zulu:® tested, certified builds of OpenJDK

by Azul Systems
https://www.azul.com/downloads/zulu/

Versions
Java 9, 8, 7, and 6 (See download page for details)

Supported Platforms
Windows, Linux, MacOS, Cloud on Azure and AWS (See download page for details)


DockerHub

Zulu OpenJDK by Azul Systems

https://hub.docker.com/r/azul/zulu-openjdk/

9ea
8u144, 8, latest (8u144/Dockerfile)
7u154, 7, latest (7u154/Dockerfile)
6u97, 6, latest (6u97/Dockerfile)


参考: NOT OpenJDK

Official IBM® SDK, Java™ Technology Edition Docker Image
https://hub.docker.com/r/library/ibmjava/

1.8.0_sr5 (8.0-5.0)
1.9.0_ea2 (9.0 early access)

メモ: java 9とleiningenの関係 - 2017/10/10現在

leiningenと同じように-Xbootclasspath/aにclojure 1.8など(1.4以降)のjarを指定して、java 9からclojure.mainを呼んでも起動しない。

[#CLJ-2077] Clojure can't be loaded from the boot classpath under java 9 - Clojure JIRA
https://dev.clojure.org/jira/browse/CLJ-2077

# jarをダウンロード
$ wget 'https://search.maven.org/remotecontent?filepath=org/clojure/clojure/1.8.0/clojure-1.8.0.jar'
# clojure.mainを呼んでみる
$ java -client -Xbootclasspath/a:./clojure-1.8.0.jar \
 clojure.main -e "(println \"hello\")"
# java.sql.Timestampが見つからないと怒られる
Exception in thread "main" java.lang.ExceptionInInitializerError
 ...
Caused by: java.lang.ClassNotFoundException: java.sql.Timestamp
 ...

clojure 1.9 beta1 で対処することになったが、clojure 1.8 までは変更しないことに

# jarをダウンロード
$ wget 'https://search.maven.org/remotecontent?filepath=org/clojure/clojure/1.9.0-beta2/clojure-1.9.0-beta2.jar'
$ wget 'https://search.maven.org/remotecontent?filepath=org/clojure/spec.alpha/0.1.134/spec.alpha-0.1.134.jar'
# clojure.mainを呼んでみる
$ java -client -Xbootclasspath/a:./clojure-1.9.0-beta2.jar:./spec.alpha-0.1.134.jar \
 clojure.main -e "(print \"hello\")"

(clojure1.9からclojure.jarとspec.alpha.jarが必要)

その他の回避策

Java 9 incompatibility · Issue #2149 · technomancy/leiningen
https://github.com/technomancy/leiningen/issues/2149

leinのシェルスクリプトファイルから、BOOTCLASSPATH変数を設定する箇所をコメントアウト

そろそろ設定をスキップできるようになるかも
Release 2.8.0-RC1 · technomancy/leiningen
https://github.com/technomancy/leiningen/releases/tag/2.8.0-RC1
"Support skipping bootclasspath for Java 9 compatibility. (Phil Hagelberg)"

どうしてもbootcalasspath/aを指定したいなら、java 8までか、clojure 1.9 beta1以降 (現在 beta2)を使おう。