Eclipse Temurin(Adoptium)のOpenJDK17をダウンロード〜インストールする手順について説明しています。インストール後のJava環境確認や簡単なJavaコードをコンパイル〜実行して動作確認もしています。
※ 本ページはプロモーションが含まれています。
本記事では、JavaのJDK17の中でもEclipse Temurin(Adoptium) OpenJDK17をダウンロード&インストールする方法について説明しています。現時点(2023年5月28日)でのOpenJDKの最新版バージョンは20(Java20)ですが、LTS(長期安定サポート)の最新安定版は17(Java17)なので、OpenJDK17をインストールしていきます。
Javaの開発・実行環境を作りたい人や、Javaプログラミングの学習をしたいJava入門者・初心者の方は参考にしてください。
■Eclipse Temurinn(Adoptium) OpenJDKとは何か?
OpenJDKにはいくつかのディストリビューションがあります。Eclipse Temurinはライセンスに従って無料で使えるオープンソースのOpenJDKで、結構人気がありよく使われるOpenJDKだと思います。
以前にAdoptOpenJDKというOpenJDKがあり、AdoptOpenJDKがEclipse Foundationに移行してAdoptiumワーキンググループができ、AdoptiumがEclipse TemurinというOpenJDKを公開したという経緯があります。なのでEclipse Temurin OpenJDKは旧AdoptOpenJDKの後継です。
Adoptium Temurin OpenJDKはGCP(Google Cloud Platform)のJava環境にも使われていたりもします。
Google CloudのJavaランタイムにEclipse Temurin採用へ、GoogleがEclipse Adoptiumに参加を発表
◾️動作環境とバージョン情報です
OS:macOS Big Sur(バージョン11.7.2)
インストールするOpenJDK:Eclipse Temurin(Adoptium) OpenJDK17(Java17)
別ページで、CentOS7環境にEclipse Temurin(Adoptium)とMicrosoftのOpenJDKをインストールする方法や、AWSのec2上にAmazonのOpenJDK(OpenJRE)ディストリビューションのAmazon Correttoをインストールする方法について説明しているので、よければ参考にしてください。
OpenJDKをインストールする【ec2(Amazon Linux 2,2023)】
OpenJDKをインストールする【CentOS7】
JavaのJDKとJREの違い。OpenJDKとは?OpenJDKの複数の種類について
Eclipse TemurinのOpenJDKは、Adoptium公式サイトからダウンロードできます。
公式のトップページを見ると、"Download Temurin for macOS x64"と私のOS環境用になっていたので(たぶん使用しているOS環境に合った物を表示してくれてる)、そのまま「Latest LTS Release jdk-17.0.7+7」を選択してダウンロードします(2023年5月28日時点)。Latest LTS Releaseは最新LTSリリース版、LTSはLong-Term Support(長期サポート版)の事です。
違うOS環境やバージョン(非LTSの最新バージョンのOpenJDK20とか)のOpenJDKや、OpenJRE(Java Runtime Environment, JVM)だけをダウンロードしたい場合、「Other platforms and versions」や「Release Archive」の方を選択してリンクを辿れば、そこからダウンロードする事ができます。
私の環境では「OpenJDK17U-jdk_x64_mac_hotspot_17.0.7_7.pkg」がダウンロードできたので、このpkgファイルを開きます。
Eclipse Temurin OpenJDK17のインストーラが起動します。
Eclipse Temurin OpenJDKのインストーラでは、自分の場合は次にように進めてOpenJDK17をインストールしました。
・はじめに画面:続けるボタンを選択。
・使用許諾契約画面:続ける(Continue)ボタンを選択。使用許諾契約の確認メッセージが出るので問題なければAgree(同意する)ボタンを選択。
・インストール先画面:続けるボタンを選択。
・インストールの種類:デフォルト設定でインストールボタンを選択。(もしもカスタマイズやインストール先の変更をしたい場合はここでする。)
->OSのパスワードを要求されるので、パスワードを入力してソフトウェアインストールボタンを選択するとインストールが始める。
・インストールが完了しました画面が出るので、閉じるボタンを選択して終了。
インストーラに従って、簡単にEclipse TemurinのOpenJDK17(Java17)をインストールする事ができました!(自分の場合はデフォルト設定のままで続けるとインストールを選択するだけだった。)
これでEclipse TemurinのOpenJDK17(Java17)をインストールできたので、このあと簡単にJavaの環境確認と動作確認をしていきます。
ターミナル上でコマンドを確認したら、java,javacコマンドの両方を使えるようになりました。(javaバージョンはもちろん17.0.7。)
$ java -version
openjdk version "17.0.7" 2023-04-18
OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7)
OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)
$ javac -version
javac 17.0.7
Eclipse Temurin OpenJDK17本体のインストール先ディレクトリはこちら。
/Library/Java/JavaVirtualMachines/temurin-17.jdk
本体の容量は308MB程度ですね。
$ du -sh /Library/Java/JavaVirtualMachines/temurin-17.jdk/
308M /Library/Java/JavaVirtualMachines/temurin-17.jdk/
$ du -sh /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/*/
308M /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/
84K /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/MacOS/
72K /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/_CodeSignature/
java_homeコマンドの結果です。
$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
$ /usr/libexec/java_home --verbose
Matching Java Virtual Machines (1):
17.0.7 (x86_64) "Eclipse Adoptium" - "OpenJDK 17.0.7" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
$ /usr/libexec/java_home -X
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>JVMArch</key>
<string>x86_64</string>
<key>JVMBundleID</key>
<string>net.java.openjdk.jdk</string>
<key>JVMEnabled</key>
<true/>
<key>JVMHomePath</key>
<string>/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home</string>
<key>JVMName</key>
<string>OpenJDK 17.0.7</string>
<key>JVMPlatformVersion</key>
<string>17.0.7</string>
<key>JVMVendor</key>
<string>Eclipse Adoptium</string>
<key>JVMVersion</key>
<string>17.0.7</string>
</dict>
</array>
</plist>
せっかくOpenJDKをインストールしたので、簡単なJavaプログラミングコードをコンパイルして実行してみます。
まず、Javaファイル(HelloWorld.java)を作成します。(ただのHello world出力と、システムプロパティのプリントデバッグでOpenJDKのバージョンやディストリビューションベンダーの情報を確認するコード。)
$ ls
HelloWorld.java
$ cat HelloWorld.java
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
//システムプロパティのプリントデバッグ
System.out.println("os.name :" + System.getProperty("os.name"));
System.out.println("os.version :" + System.getProperty("os.version"));
System.out.println("os.arch :" + System.getProperty("os.arch"));
System.out.println("java.version : " + System.getProperty("java.version"));
System.out.println("java.version.date :" + System.getProperty("java.version.date"));
System.out.println("java.vendor :" + System.getProperty("java.vendor"));
System.out.println("java.home :" + System.getProperty("java.home"));
System.out.println("java.vm.name : " + System.getProperty("java.vm.name"));
System.out.println("java.vm.version :" + System.getProperty("java.vm.version"));
System.out.println("java.vm.vendor :" + System.getProperty("java.vm.vendor"));
System.out.println("user.name :" + System.getProperty("user.name"));
System.out.println("java.class.path :" + System.getProperty("java.class.path"));
System.out.println("file.separator :" + System.getProperty("file.separator"));
System.out.println("path.separator :" + System.getProperty("path.separator"));
}
}
javacコマンドでコンパイルします。
$ javac HelloWorld.java
$ ls
HelloWorld.class HelloWorld.java
javaクラスファイルを生成できたので、javaコマンドで実行します。
$ java HelloWorld
Hello, world!
os.name :Mac OS X
os.version :11.7.6
os.arch :x86_64
java.version : 17.0.7
java.version.date :2023-04-18
java.vendor :Eclipse Adoptium
java.home :/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
java.vm.name : OpenJDK 64-Bit Server VM
java.vm.version :17.0.7+7
java.vm.vendor :Eclipse Adoptium
user.name :hogeuser
java.class.path :.
file.separator :/
path.separator ::
システムプロパティの情報を見れば、OpenJDKのバージョン情報(17.0.7)だけでなく、ディストリビューションベンダー(Eclipse Adoptium)の情報もわかりますね。
EclipseでJavaプログラミング開発をしているので、今回インストールしたEclipse Temurinの新バージョンのOpenJDKをEclipse上のJava開発プロジェクトでも使いたいと思います。
別ページで、EclipseのJavaプロジェクトで使用するJavaの設定方法について説明しているので参考にしてください。
EclipseのJavaプロジェクトで使うJDK(Java)を新規追加して設定する
Eclipse Temurin OpenJDK17をインストールしたばかりですが、アンインストールも試してみたいのでやってみます。
ここでEclipse Temurin OpenJDK17をアンインストールしても、再度Eclipse Temurin OpenJDK17のインストーラを使えば同じようにインストールできます。
OpenJDKをアンインストールすると言っても、Eclipse Temurin OpenJDK17の本体があるディレクトリをrmコマンドで削除するだけです。
$ sudo rm -rf /Library/Java/JavaVirtualMachines/temurin-17.jdk
Password:
rmコマンドでOpenJDK17の本体削除後のJavaの環境確認です。
java,javacコマンドは当然使えなくなります。あとjava_homeコマンドも使えない。(ただ、java,javac実行ファイル自体はもちろんそのままあるからコマンドエラーという訳ではない。)
$ java
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
$ javac
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
$ which java
/usr/bin/java
$ which javac
/usr/bin/javac
$ /usr/libexec/java_home
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
これでEclipse TemurinのOpenJDK17のアンインストール(削除)は完了です。
この後にEclipse Temurinのインストーラを使って、再度Eclipse Temurin OpenJDK17をインストールしました。
Eclipse自体も主にJavaで作られているので、Eclipseの起動・使用自体にJava(のビルドされたバイナリ、JRE、JVM)を必要とします。
ですので、OpenJDKをアンインストール(削除)した事で、もしかしたらEclipseが起動できなくなるかもしれません。(自分の環境ではEclipseインストール時に一緒に入っていたJavaを使用していたので、Eclipse TemurinのOpenJDKを削除しても問題なかった。)
ですので、もしもEclipseが起動できなくなったら、Eclipseを起動・動かすのに使用しているJava(JVM)を確認してください。Eclipseの起動に使用しているJavaは、eclipse.iniファイルの-vmオプションで設定しています。
■eclipse.iniファイルのパス(自分の環境の場合。環境やインストールしたEclipseのバージョン・ディストリビューションによってパスは異なると思うけど、eclipse.iniファイルはどこかにあるはず。)
/Applications/Eclipse_2020-06.app/Contents/Eclipse/eclipse.ini
■eclipse.iniファイル内の-vmオプション
-vm
/Applications/Eclipse_2020-06.app/Contents/java/11/Home/bin
〜
-vmオプションで使用可能なJava(JDK、JRE)のビルド済バイナリのパスを指定すれば、またEclipseを起動して使えるようになると思います。