Oracle JDK が 2018年 リリースされた Java11 から有償サポート化し、 Java8 のサポート期限が2019年1月で終了した。また、エンドユーザーが .jar を実行するなどするためのエンドユーザー向けに配布されていたJRE も配布されなくなった。
有償サポートは Oracle Java SE Desktop Subscription の場合、1年間1ライセンスで US$30.00 。これを支払い続けるのであれば引き続き Oracle Java (Java SE 11.0.2(LTS))を使用できる。
ただし、この費用を支払い続けるのでなければ他の無償版 JDK に移行することが必要になったということだ。そこで調べてみたのだが、いろいろ不明な点があり正直エンドユーザにとってはどうすればいいか分からないのが現状だと思う。
不明点1:無償版 JDK はどれを使ったらいいの?
OpenJDK, AdoptOpenJDK があるが、どちらがいいのか分からない。参考記事によると、 AdoptOpenJDK は「 OpenJDK のビルドを提供するプロジェクト」とされているが、別に AdoptOpenJDK からダウンロードしなくても、 OpenJDK のサイト自体で JDK をダウンロード出来るので、敢えて AdoptOpenJDK を選ぶ理由が分からない。
不明点2:AdoptOpenJDK は JVM に HotSpot と OpenJ9 を選択することになる。どっちがいいの?
先に説明だが、 JVM とは Java Virtual Machine の略と思われる。要は java のコードを実行する仮想マシンエンジンのことだろう。複数のエンジンから一つを選ばせる形になっているわけだ。
ダウンロードページのヘルプを見ると、
HotSpot is the VM from the OpenJDK community. It is the most widely used VM today and is used in Oracle’s JDK. It is suitable for all workloads.
For more details see OpenJDK HotSpot.
OpenJ9 is the VM from the Eclipse community. It is an enterprise-grade VM designed for low memory usage and fast start-up and is used in IBM’s JDK. It is also suitable for running all workloads.
For more details see Eclipse OpenJ9.
と書かれている。 HotSpot は OpenJDK で開発されていて Oracle JDK でも使われており、 OpenJ9 は Eclipse で開発されていて IBM JDK で使われている、という違いがあるようだ。
・・・だから何?
それを聞いて、どっちを使ったらいいか即決できる人なんて、エンドユーザの中のごくごくわずかじゃないの? Oracle JRE がなくなったからやむを得ず移行しようとする一般ユーザにとって、普通はそんなこと聞かされてもさっぱり違いが分からないし、どっちを選んだらいいか判断なんてできないと思う。 Oracle JRE にあった機能のうち、どんな機能が削除されているので、こちらは使わない方がいい、とか、もっと判断材料になることを書いてもらわないと、何の助けにもならない。
不明点3:ダウンロードしても .jar ファイルを起動できるようにならない
これはまったく致命的だ。上記の JDK にはインストーラが付属していない。ダウンロードしたら、自分で .jar との関連付けを行う必要があるのだ。だが今回の件で無償版 JDK への移行方法を紹介しているサイトで、ダウンロード方法に併せて .jar の関連付けによりダブルクリック起動できるようにする方法が紹介されているサイトは実は皆無だった。エンドユーザにとって、この部分が一番出来なくて困る点なので紹介しておく。
.jar ファイルをダブルクリックしたときに、特定の java 環境で起動させるための関連付けは、以下の様な形で実装されている。
(A) assoc コマンドによる .jar ファイルに対するファイルタイプの定義
Oracle JRE の場合、
と定義されている。( assoc (改行)で確認できる。)
(B) ftype コマンドによるファイルタイプに対するアプリケーション起動コマンドの定義
Oracle JRE の場合、
と定義されている。( ftype (改行)で確認できる。 )
このように2段階に定義づけされており、これを修正して、新しくダウンロードしてきた JDK の中にあるアプリケーションを起動するように変更する必要があるのだ。
具体的な手順の例としては、例えば、
(1)コントロールパネルのプログラムと機能から、 Oracle Java 関連をアンインストールする。
(2) AdoptOpenJDK から x64 の HotSpot JVM 版の JDK をダウンロードする。
(3) C:\Program Files\ にファイルを展開する。C:\Program Files\ の直下に jdk-11.0.2+9 というフォルダが作成される。
(4)コマンドプロンプトを管理者として実行する。
(5)以下のコマンドを実行する( AdoptOpenJarfile という名前は他のものに変えても良い)。
assoc .jar=AdoptOpenJarfile ftype AdoptOpenJarfile="C:\Program Files\jdk-11.0.2+9\bin\javaw.exe" -jar "%1" %*
正しく実行できていれば、この時点で .far ファイルのアイコンが Oracle JRE の javaw.exe のものから、 AdoptOpenJDK の javaw.exe のものに変わる。後は、起動したい .jar ファイルをダブルクリックすれば起動できるはずだ。今後は、 JDK の新しいバージョンをダウンロードするたびに、フォルダ名(上の例で jdk-11.0.2+9 の部分)を変更しない場合を除いて、この関連付け作業が必要になる。
この記事のリンク元