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)を使おう。

2014年3月16日日曜日

Clojure 1.6.0 (beta-1)のJAVA API

Clojure 1.6.0 Beta1のJAVA APIのjavadocを作成ました。 Clojure1.5.1から変わっているらしい。

2013年7月7日日曜日

ClojureCLR-1.5.0 スナップショット

ClojureCLR 1.5.0のスナップショットをビルドしました。

ClojureCLRをビルドするのにパッケージを用意するのには、libフォルダにDLRを追加するのではなく、nuget経由でパッケージを使うようですが
現時点では、.net4.0(Release版)のみビルド出来ました。


skydriveにファイルを上げましたのでリンクを張っておきます。

更新:Microsoft.Dynamic.dll, Microsoft.Scripting.dll, Microsoft.Scripting.Metadata.dllを追加しました。

2013年7月5日金曜日

Clojure 1.5.1 Java API



1.5.1は1.3.0から変わりが無いように見える。
1.6.0で変更があるようで、clojure-dev MLでは議論されており、
githubのmasterリポジトリで確認できる。

pidigits Clojure #x program | Computer Language Benchmarks Game


Computer Language Benchmarks GameにGMPライブラリを使ったClojure pididitsを投稿してみた。

shootoutの投稿に関しては1ファイルで完結するなど規約が(どこかに)ある。
clojureでJNIを使う場合は、ファイル分けして対応するか3rdパーティライブラリを使うのだが、その制限でJNIを使うのは結構めんどくさい。


そこで、JNIのclassファイルをASMに書き換えて、compile後も動くようにリフレクションで呼び出すようにして対処した。

ASMの部分はこちらを参考にやってみた。
https://gist.github.com/athos/1033052

http://asm.ow2.org/eclipse/

一番不安なところは、元にしたjava版では実行時にエラーが起きているところ。
提出先でうまく動けばいいのだけど・・・。
(ローカルでは動いている)

http://benchmarksgame.alioth.debian.org/u64/program.php?test=pidigits&lang=java&id=2
http://benchmarksgame.alioth.debian.org/u32/program.php?test=pidigits&lang=java&id=2

また、clojure.asmが将来Clojureの公開APIから消える可能性があり、その場合は動作しなくなる予定。

2012年6月2日土曜日

プログラミング系で押さえておきたい出版社が電子版をかなり扱うようになってきた

出版用にレイアウトされたプログラム系の本が、2割引ぐらいでうっているらしい。


O'Reilly Japan Ebook Store

出版したオライリー本がの一部を扱っている

オーム社eStore(β)
オーム社の出版物のなかでもアジャイル系や各言語の有名な入門書がありおすすめ。

達人出版会
独自の本以外にも、インプレスジャパンやアスキー・メディアワークスの書籍も扱っている。