UbuntuでJavaを使用できるようにするには「SDKMAN!」を使用すると便利です。
SDKMAN!を使用すると、様々なJavaのディストリビューションを自由にインストールしたり、必要に応じてバージョンを切り替えたりすることができます。
Javaが使用「できない」ことの確認
SDKMAN!をインストールする前に、インスタンス上でJavaが使用できないことを確認しておきます。
「java -version」コマンドでJavaのバージョン確認を試みます。Javaが使用できない環境であれば、下記のような出力となるはずです。
ubuntu@ip-10-0-0-228:~$ java -version
Command 'java' not found, but can be installed with:
sudo apt install default-jre # version 2:1.17-75, or
sudo apt install openjdk-17-jre-headless # version 17.0.12+7-1ubuntu2~24.04
sudo apt install openjdk-21-jre-headless # version 21.0.4+7-1ubuntu2~24.04
sudo apt install openjdk-19-jre-headless # version 19.0.2+7-4
sudo apt install openjdk-20-jre-headless # version 20.0.2+9-1
sudo apt install openjdk-22-jre-headless # version 22~22ea-1
sudo apt install openjdk-11-jre-headless # version 11.0.24+8-1ubuntu3~24.04.1
sudo apt install openjdk-8-jre-headless # version 8u422-b05-1~24.04
javaコマンドが見つからないとともに、aptを使用してJavaをインストールすることができるガイダンスが表示されます。これで、Javaが使用「できない」ことが確認できました。
「unzip」「zip」のインストール
SDKMAN!をインストールするために、「unzip」および「zip」をインストールします。
SDKMAN!がこの2つの機能を使用するため、インストールしておかなければならないのです。
※もしこの2つのパッケージをインストールしないままにSDKMAN!をインストールするとどうなるかというと、後ほど実行するインストールスクリプトでインストールがキャンセルされるようになっています。
「unzip」および「zip」をインストールするには、下記のコマンドを順に実行します。
# リストの最新化
sudo apt update
# unzipのインストール
sudo apt install unzip
# zipのインストール
sudo apt install zip
これで、「unzip」と「zip」をインストールすることができます。
「SDKMAN!」のインストール
次に、SDKMAN!をインストールします。インストールするには、下記のコマンドを実行します。
curl -s "https://get.sdkman.io" | bash
※このコマンド実行時に「unzip」「zip」が環境に入っていないとインストールがキャンセルされるようになっています。下記は、試しにunzipをインストールしないままにSDKMAN!のインストールを試みた例です。

下のほうにunzipをインストールするようガイダンスが表示されています。
SDKMAN!のインストール処理が終わったら、試しに「sdk」コマンドを実行してみてください。おそらく、下記のような表示となるはずです。
ubuntu@ip-10-0-0-228:~$ sdk
Command 'sdk' not found, did you mean:
command 'sdc' from deb hpsockd (0.17+nmu1)
command 'skk' from deb libskk-utils (1.0.5-2)
command 'sd' from deb sd (1.0.0-2)
command 'sds' from deb simh (3.8.1-6.1)
command 'sdf' from deb sdf (2.001+1-9)
command 'sak' from deb seqan-apps (2.4.0+dfsg-15ubuntu1)
Try: sudo apt install <deb name>
SDKMAN!を使用するには、変更をインスタンスに反映させる必要があります。下記のコマンドで、変更を反映させることができます。
source /home/ubuntu/.sdkman/bin/sdkman-init.sh
上記のコマンドを入力した後、再び「sdk」を使用してみてください。使用できるようになっているはずです。
ubuntu@ip-10-0-0-228:~$ source /home/ubuntu/.sdkman/bin/sdkman-init.sh
ubuntu@ip-10-0-0-228:~$ sdk
NAME
sdk - The command line interface (CLI) for SDKMAN!
SYNOPSIS
sdk <subcommand> [candidate] [version]
DESCRIPTION
SDKMAN! is a tool for managing parallel versions of multiple JVM related
Software Development Kits on most Unix based systems. It provides a
convenient Command Line Interface (CLI) and API for installing, switching,
removing and listing Candidates.
SUBCOMMANDS & QUALIFIERS
help [subcommand]
install <candidate> [version] [path]
uninstall <candidate> <version>
list [candidate]
use <candidate> <version>
config no qualifier
default <candidate> [version]
home <candidate> <version>
env [init|install|clear]
current [candidate]
upgrade [candidate]
version no qualifier
offline [enable|disable]
selfupdate [force]
update no qualifier
flush [tmp|metadata|version]
EXAMPLES
sdk install java 17.0.0-tem
sdk help install
これでSDKMAN!の準備は整いました。次に、SDKMAN!を使用してJavaをインストールしていきます。
SDKMAN!を使用したJavaのインストール
SDKMAN!を使ってインストールできるJavaの一覧を確認するには「sdk list java」を使用します。
コマンドを使用すると、おそらく下記のような表示になるはずです。
================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 23.0.1 | amzn | | 23.0.1-amzn
| | 21.0.5 | amzn | | 21.0.5-amzn
| | 17.0.13 | amzn | | 17.0.13-amzn
| | 11.0.25 | amzn | | 11.0.25-amzn
| | 8.0.432 | amzn | | 8.0.432-amzn
Dragonwell | | 17.0.13 | albba | | 17.0.13-albba
| | 11.0.25 | albba | | 11.0.25-albba
| | 8.0.432 | albba | | 8.0.432-albba
Gluon | | 22.1.0.1.r17 | gln | | 22.1.0.1.r17-gln
| | 22.1.0.1.r11 | gln | | 22.1.0.1.r11-gln
GraalVM CE | | 23.0.1 | graalce | | 23.0.1-graalce
| | 21.0.2 | graalce | | 21.0.2-graalce
| | 17.0.9 | graalce | | 17.0.9-graalce
GraalVM Oracle| | 25.ea.2 | graal | | 25.ea.2-graal
| | 25.ea.1 | graal | | 25.ea.1-graal
| | 24.ea.25 | graal | | 24.ea.25-graal
| | 24.ea.24 | graal | | 24.ea.24-graal
| | 24.ea.23 | graal | | 24.ea.23-graal
| | 24.ea.22 | graal | | 24.ea.22-graal
| | 23.0.1 | graal | | 23.0.1-graal
| | 21.0.5 | graal | | 21.0.5-graal
| | 17.0.12 | graal | | 17.0.12-graal
Java.net | | 25.ea.3 | open | | 25.ea.3-open
| | 25.ea.2 | open | | 25.ea.2-open
| | 25.ea.1 | open | | 25.ea.1-open
| | 24.ea.29 | open | | 24.ea.29-open
| | 24.ea.28 | open | | 24.ea.28-open
| | 24.ea.27 | open | | 24.ea.27-open
| | 24.ea.26 | open | | 24.ea.26-open
| | 23 | open | | 23-open
| | 21.0.2 | open | | 21.0.2-open
JetBrains | | 21.0.5 | jbr | | 21.0.5-jbr
| | 17.0.12 | jbr | | 17.0.12-jbr
| | 11.0.14.1 | jbr | | 11.0.14.1-jbr
Liberica | | 23.0.1.fx | librca | | 23.0.1.fx-librca
| | 23.0.1 | librca | | 23.0.1-librca
| | 21.0.5.crac | librca | | 21.0.5.crac-librca
| | 21.0.5.fx | librca | | 21.0.5.fx-librca
| | 21.0.5 | librca | | 21.0.5-librca
| | 17.0.13.crac | librca | | 17.0.13.crac-librca
| | 17.0.13.fx | librca | | 17.0.13.fx-librca
| | 17.0.13 | librca | | 17.0.13-librca
| | 11.0.25.fx | librca | | 11.0.25.fx-librca
| | 11.0.25 | librca | | 11.0.25-librca
:
※spaceキーで次のページへ、qキーで抜けられます。
この通り、Javaは様々な企業がディストリビューションを提供しています。SDKMAN!を使用すると、ここに表示されているディストリビューションの中から好きなものを選んで使用できるようにすることができます。
特にこだわりがなければ、Amazonが提供しているCorrettoを使用してみましょう。「sdk install java 21.0.4-amzn」のように、「sdk install java <Identifier>」の構文でインストールできます。
ubuntu@ip-10-0-0-228:~$ sdk install java 21.0.4-amzninstall java 21.0.4-amzn
Downloading: java 21.0.4-amzn
In progress...
############################################################### 100.0%
Repackaging Java 21.0.4-amzn...
Done repackaging...
Installing: java 21.0.4-amzn
Done installing!
Setting java 21.0.4-amzn as default.
これでAmazon CorrettoのJavaをインストールすることができました。「sdk list java」で出力を再確認しましょう。
================================================================================
Available Java Versions for Linux 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 23.0.1 | amzn | | 23.0.1-amzn
| | 21.0.5 | amzn | | 21.0.5-amzn
| >>> | 21.0.4 | amzn | local only | 21.0.4-amzn
| | 17.0.13 | amzn | | 17.0.13-amzn
| | 11.0.25 | amzn | | 11.0.25-amzn
| | 8.0.432 | amzn | | 8.0.432-amzn
Dragonwell | | 17.0.13 | albba | | 17.0.13-albba
| | 11.0.25 | albba | | 11.0.25-albba
| | 8.0.432 | albba | | 8.0.432-albba
Gluon | | 22.1.0.1.r17 | gln | | 22.1.0.1.r17-gln
| | 22.1.0.1.r11 | gln | | 22.1.0.1.r11-gln
GraalVM CE | | 23.0.1 | graalce | | 23.0.1-graalce
| | 21.0.2 | graalce | | 21.0.2-graalce
| | 17.0.9 | graalce | | 17.0.9-graalce
GraalVM Oracle| | 25.ea.2 | graal | | 25.ea.2-graal
| | 25.ea.1 | graal | | 25.ea.1-graal
| | 24.ea.25 | graal | | 24.ea.25-graal
| | 24.ea.24 | graal | | 24.ea.24-graal
| | 24.ea.23 | graal | | 24.ea.23-graal
| | 24.ea.22 | graal | | 24.ea.22-graal
| | 23.0.1 | graal | | 23.0.1-graal
| | 21.0.5 | graal | | 21.0.5-graal
| | 17.0.12 | graal | | 17.0.12-graal
Java.net | | 25.ea.3 | open | | 25.ea.3-open
| | 25.ea.2 | open | | 25.ea.2-open
| | 25.ea.1 | open | | 25.ea.1-open
| | 24.ea.29 | open | | 24.ea.29-open
| | 24.ea.28 | open | | 24.ea.28-open
| | 24.ea.27 | open | | 24.ea.27-open
| | 24.ea.26 | open | | 24.ea.26-open
| | 23 | open | | 23-open
| | 21.0.2 | open | | 21.0.2-open
JetBrains | | 21.0.5 | jbr | | 21.0.5-jbr
| | 17.0.12 | jbr | | 17.0.12-jbr
| | 11.0.14.1 | jbr | | 11.0.14.1-jbr
Liberica | | 23.0.1.fx | librca | | 23.0.1.fx-librca
| | 23.0.1 | librca | | 23.0.1-librca
| | 21.0.5.crac | librca | | 21.0.5.crac-librca
| | 21.0.5.fx | librca | | 21.0.5.fx-librca
| | 21.0.5 | librca | | 21.0.5-librca
| | 17.0.13.crac | librca | | 17.0.13.crac-librca
| | 17.0.13.fx | librca | | 17.0.13.fx-librca
| | 17.0.13 | librca | | 17.0.13-librca
| | 11.0.25.fx | librca | | 11.0.25.fx-librca
:
「Use」欄に矢印が表示され、使用可能であることが示されています。
Javaが使用「できる」ことの確認
ここまで実行出来たら、whichコマンドを使用してJavaがどこに存在しているのか確認してみましょう。「which java」コマンドを使用し、在処を確認します。
ubuntu@ip-10-0-0-228:~$ which java
/home/ubuntu/.sdkman/candidates/java/current/bin/java
SDKMAN!が管理するディレクトリに、Javaが存在していることが分かります。「java -version」コマンドを使用して、バージョンを確認しましょう。
ubuntu@ip-10-0-0-228:~$ java -version
openjdk version "21.0.4" 2024-07-16 LTS
OpenJDK Runtime Environment Corretto-21.0.4.7.1 (build 21.0.4+7-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.4.7.1 (build 21.0.4+7-LTS, mixed mode, sharing)
今度はパスが通り、Javaが使用できることが確認できました。
このように、SDKMAN!を使用すると簡単にUbuntu環境にJavaをインストールすることができます。
今回は以上になります。