バナー画像

Java は歴史が長いこともあり、これまで多くのリリースが行われてきました。

Oracle が Java を有償化(現在は無償化に戻っている)したこともあり、Open JDK や、AWS の Amazon Corretto など、多くの Java ディストリビューションが生まれ、リリースされてきたバージョンと、ディストリビューションをかけ合わせると数え切れないほどです。

このような状況であることから、システムによって、Java のバージョンが異なることは少なくなく、古いシステムをメンテナンスするために、開発者は 新しいバージョンの Java をアンインストールして、ダウングレードを行う必要もあります。

Java のダウングレードは手間がかかるため、昨今では Java をアンインストールせずに、Java のバージョンを切り替えるツールも存在します。

この記事では、1台のPC上に複数の Java を共存させ、それぞれバージョンを切り替える「SDKMAN」の使用方法を解説していきます。

SDKMAN

SDKMAN は、一言で言えば JVM環境のパッケージ管理ツールです。

1台のPC上に、複数の Java や Scala、Kotlinのバージョンをインストールでき、必要な時に切り替えて使うことができます。

ポテパンダの一言メモ

Ruby の開発経験者であれば、rbenv、Python の経験者であらば、pyenv と同じような機能を持ったツールのイメージだと思うと理解しやすいでしょう。

SDKMAN は、macOS および Linux のUNIX互換のOSに対応したツールです。Windows の場合は後述する方法でインストールすることもできます。

インストール

それでは、SDKMAN のインストールをしていきましょう。

Linux 系の OS の場合は、インストール前にパッケージのアップデートと、SDKMAN のインストールプロセスの中で使われるツールのインストールをしておきます。

# パッケージのアップデート
$ apt-get update

# SDKMANが使用するツールのインストール
$ apt-get install -y \
    unzip \
    zip \
    curl

準備ができたら、curl コマンドで SDKMAN のインストールシェルをダウンロードして実行します。

$ curl -s "https://get.sdkman.io" | bash

インストールが完了したら、次のコマンドを入力してSDKMANの初期化用のスクリプトを実行します。

$ source "$HOME/.sdkman/bin/sdkman-init.sh"

sdk version をコマンドで打ち込み、次のようにバージョンが表示されればインストール成功です。

$ sdk version
SDKMAN 5.13.1

SDKMAN で Java をインストール

SDKMAN を使って、Java をインストールする手順を見ていきましょう。

インストール可能な Java を表示

インストール可能な Java の一覧を確認する時は、次のコマンドを使用します。

$ sdk list java

結果は次のように出力されます。(本来はもっと多くのバージョンが出力されますが、結果を省略しています)

================================================================================
Available Java Versions
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 AdoptOpenJDK  |     | 16.0.1.j9    | adpt    |            | 16.0.1.j9-adpt      
               |     | 16.0.1.hs    | adpt    |            | 16.0.1.hs-adpt      
 Corretto      |     | 17.0.1.12.1  | amzn    |            | 17.0.1.12.1-amzn    
               |     | 17.0.0.35.1  | amzn    |            | 17.0.0.35.1-amzn 

Java のインストール

Java のインストールは sdk install java コマンドを使用します。

試しに、AdoptOpenJDK の長期LTS版であるバージョン 11 をインストールしてみましょう。

$ sdk install java 11.0.11.hs-adpt 
ポテパンダの一言メモ

AdoptOpenJDK はコミュニティにより提供される OpenJDK バイナリです。

正常にインストールできたか確認をします。

$ java -version

#以下のように、AdoptOpenJDKのバージョン情報が出力されていればOK
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)

SDKMAN の特徴である、複数のバージョンのインストールと切り替えを試すため、さらに追加で Java をインストールしましょう。

次は Oracle JDK のバージョン 17をインストールしましょう。

$ sdk install java 17.0.0-oracle

追加で Java をインストールすると、インストール後に、追加でインストールした Java をデフォルトに設定するか尋ねられるため、必要に応じて Y (Yes)、N (No) を選択します。

Installing: java 17.0.0-oracleDone installing!Do you want java 17.0.0-oracle to be set as default? (Y/n): 

使用する Java のバージョンを切り替える

複数の Java のバージョンをインストールしている環境で、デフォルトの Java のバージョンを切り替える場合は、sdk default コマンドを使用します。

先ほどインストールした Oracle JDK をデフォルトに切り替えてみます。

$ sdk default java 17.0.0-oracle

バージョンが切り替わったか確認します。

$ java -versionjava version "17" 2021-09-14 LTSJava(TM) SE Runtime Environment (build 17+35-LTS-2724)Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)

インストール済みの Java の確認

端末にインストール済の Java を確認する時も sdk list コマンドを使用します。

$ sdk list java

インストール済の Java バージョンの場合、Status 列に「installed」と表示されます。

================================================================================Available Java Versions================================================================================ Vendor        | Use | Version      | Dist    | Status     | Identifier-------------------------------------------------------------------------------- AdoptOpenJDK  |     | 16.0.1.j9    | adpt    |            | 16.0.1.j9-adpt                     |     | 11.0.11.hs   | adpt    | installed  | 11.0.11.hs-adpt   Oracle        |     | 17.0.1       | oracle  |            | 17.0.1-oracle                      | >>> | 17.0.0       | oracle  | installed  | 17.0.0-oracle  

Java の削除

インストールした Java を削除する時は、sdk uninstall コマンドを使用します。

sdk uninstall java 17.0.0-oracle

WIndows でSDKMANを使う方法

SDKMAN は、macOS および Linux に対応したツールであるため、デフォルトでは Windows に対応していません。

しかし、Windows Subsystem for Linux (WSL) や Docker などの Unix 互換環境を使用することで、Windows でも SDKMAN を使用することが可能です。

【関連記事】
Dockerのコンテナ内でJavaのソフトウェア開発をしてみよう

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。