UbuntuにSDKMAN!を導入し、Javaを使用できるようにする

Ubuntu

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をインストールすることができます。

今回は以上になります。

タイトルとURLをコピーしました