asdf は複数のプログラミング言語ランタイムおよびそのバージョンを管理することができるツールです。
この記事では、 asdf で利用できる Java のディストリビューションついて記載します。
前提知識
本編へ入る前に前提となる知識について記載します。
asdf
以下の記事を参照してください。
JDK
JDK は Java Development Kit の略で Java プログラミングする際に必要な以下のものを詰め合わせたものです。
- コンパイラ
- JRE
- 標準ライブラリ類、など
JRE
JRE は Java Runtime Environment の略で Java の実行環境になります。
Java のソースコードをコンパイルするとバイトコードが出力されます。
そのバイトコードを実行することができる環境です。
ディストリビューション
JDK は OSS のプロジェクトである OpanJDK プロジェクト にて開発されています。
しかし、ここで提供されているのはソースコードであり、コンパイル済みのバイナリが提供されているわけではありません。
この OpenJDK のソースコードをビルドするのは一般のエンジニアにとってはハードルが高いです。
そこで、Java に力を入れている企業やコミュニティが独自の拡張機能を入れてビルド版として提供するものがディストリビューションです。
なお、 JavaFX は OpenJDK には含まれていないので、 JavaFX プロジェクト から別途入手する必要があります。
JavaFX にもまたディストリビューションが存在します。
asdf で利用できる Java ディストリビューション
AdoptOpenJDK
コミュニティ主導でスタートしたプロジェクトで、複数の主要ベンダーにもサポートされています。
独自サポートもあり、また、 IBM などによる有償サポートも提供されています。
AdoptOpenJDKでは、「HotSpot」と「OpenJ9」の 2 種類の JVM を選択することができます。
HotSpot は OpenJDK コミュニティの JVM で、現在最も広く使用されている JVM であり、 Oracle の JDK で使用されています。
OpenJ9 は Eclipse コミュニティーの JVM で、低メモリ使用量と高速起動用に設計されたエンタープライズクラスの JVM であり、 IBM の JDK で使用されています。
なお、AdoptOpenJDKは,2021年7月末で更新を終了しており、2021年8月以降は Eclipse Adoptiumプロジェクト および IBM Developerサイト から配布が継続されます。
asdf では以下のようなバリエーションで提供されています。
- HotSpot の JDK (例:adoptopenjdk-17.0.2+8)
- HotSpot の JRE (例:adoptopenjdk-jre-17.0.2+8)
- OpenJ9 の JDK (例:adoptopenjdk-openj9-16.0.1+9.openj9-0.26.0)
- OpenJ9 の JRE (例:adoptopenjdk-jre-openj9-16.0.1+9.openj9-0.26.0)
- OpenJ9 の JDK Large Heap版(例:adoptopenjdk-openj9-large_heap-15.0.2+7.openj9-0.24.0)
- OpenJ9 の JRE Large Heap版(例:adoptopenjdk-jre-openj9-large_heap-15.0.2+7.openj9-0.24.0)
Temurin
AdoptOpenJDKは,2021年7月末で更新を終了しました。
2021年8月以降は、 Eclipse Adoptium プロジェクト および IBM Developerサイト から配布が継続されます。
Temurin は前者の Eclipse Adoptium プロジェクト提供のディストリビューションです。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:temurin-18.0.0+36)
- JRE (例:temurin-jre-17.0.2+8)
IBM Semeru Runtime
公式: https://developer.ibm.com/languages/java/semeru-runtimes/
AdoptOpenJDKは,2021年7月末で更新を終了しました。
2021年8月以降は、 Eclipse Adoptiumプロジェクト および IBM Developerサイト から配布が継続されます。
Semeru は後者の IBM 提供のディストリビューションです。
asdf では以下のようなバリエーションで提供されています。
- OpenJ9 の JDK (例:semeru-openj9-17.0.2+8_openj9-0.30.0)
Amazon Corretto
公式: https://aws.amazon.com/jp/corretto/
AWS によって提供されている JDK です。
AWS による無償の長期サポートが行われています。
AWS 上にデプロイする Java アプリケーションの場合はこれでいいでしょう。
asdf では以下のようなバリエーションで提供されています。
- JKD (例:corretto-18.0.0.37.1)
Liberica JDK
Bellsoft によって提供されている JDK です。
Bellsoft によるサポートが行われています。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:liberica-18+37)
- JRE (例:liberica-jre-18+37)
- JDK FX (例:liberica-javafx-18+37)
- JRE FX (例:liberica-jre-javafx-18+37)
- JDK Lite版 (例:liberica-lite-18+37)
Microsoft Build of OpenJDK
公式: https://www.microsoft.com/openjdk
Microsoft によって提供されている JDK です。
Azure 上にデプロイする Java アプリケーションの場合はこれでいいでしょう。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:microsoft-17.35.1)
SapMachine
公式: https://sap.github.io/SapMachine/
SAP によって提供されている JDK です。
SAP によるサポートが行われています。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:sapmachine-18)
- JRE (例:sapmachine-jre-18)
Azul Zulu
公式: https://www.azul.com/downloads/zulu/
Azul Systemsによって提供されている JDK です。
無償のCommunity版と有償のEnterprise版(サポート付)があります。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:zulu-18.28.13)
- JRE (例:zulu-jre-18.28.13)
- JDK FX (例:zulu-javafx-18.28.13)
- JRE FX (例:zulu-jre-javafx-18.28.13)
Oracle JDK
公式: https://www.oracle.com/java/technologies/downloads/
Oracle によって提供されている JDK です。
Oracle によるサポートが行われています。
なお、下記記事でも紹介されている通り、無償利用できるようになったようです。
【2022年4月23日追記】 無償範囲があるようですので以下のツイートを参考にしてください。
Oracle JDKって「無償で商用利用」というと語弊があったような?🤔
— なぎせ ゆうき (@nagise) March 22, 2022
(a) running the Program for Your own personal use or internal business operationshttps://t.co/8klY48tf2k
社内的に使うの限定でしたっけ@yamadamn の解説が欲しい
asdf では以下のようなバリエーションで提供されています。
- JDK (例:oracle-17.0.2)
Open JDK 18
Oracle がビルドした本番環境での使用に対応した JDK 。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:openjdk-18)
Kona
公式: https://openjdk.java.net/projects/kona/
Kona プロジェクトの目標は、モノのインターネット(IoT)ドメインで一般的に使用されるネットワークテクノロジーとプロトコル用のJavaAPIを定義して実装することです。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:kona-17.0.2.b1)
GraalVM
Java で実装された JIT コンパイラで、Graal を 搭載した VM です。
asdf では以下のようなバリエーションで提供されています。
- OpenJDK 11 をベースとした GraalVM (例:graalvm-22.0.0.2+java11)
- OpenJDK 17 をベースとした GraalVM (例:graalvm-22.0.0.2+java17)
- ? (例:graalvm-19.2.1)
Trava Open JDK
Hotswap プロジェクト にてメンテナンスされているディストリビューションです。
dcevm は Java実行中に動的にコードを差し替えるためのJVMの拡張です。
HotSwapAgentと組み合わせて、アプリケーションを再起動することなしにコードの変更を反映することができます。
asdf では以下のようなバリエーションで提供されています。
- JDK (例:trava-11.0.11+1)