
Java で仕事をするようになると、プロジェクトによって「この案件はJava 17」「こっちのアプリは最新のJava 21」といったように、複数のバージョンを切り替える必要が出てきます。また、現在のJava (OpenJDK) は以下のようにいくつかの企業が独自の最適化を施して無料配布しています。エンジニアは、バージョン (11、17、21など) だけでなく、「どの企業のJDKを使うか」もプロジェクトごとに切り替える必要が出てきました。そこで登場したのが、Javaのバージョン管理ツールです。
- Eclipse Temurin (旧AdoptOpenJDK:最も標準的)
- Amazon Corretto (AWS環境に最適化されている)
- Microsoft Build of OpenJDK (Azure環境向け)
環境変数の JAVA_HOME を手動で書き換えるのはバグの元です。それでも環境変数でバージョンをハンドリングしていることを知っておく必要はあります。「手動でJDKをインストールして環境変数をいじる」ということはせず、ツールを使って複数バージョンを管理しましょう。
Javaのバージョン管理ツール
チーム開発やコマンドラインでの実行なども含めてPC全体 (OS全体) でJavaのバージョンをスマートに管理するために、Javaのバージョン管理ツールが裏でよく使われています。次のようなメリットがあるので、導入しない手はないでしょう。
- インストーラーをブラウザから探してダウンロードする手間がゼロになる
- コマンドを打つだけで、PC内にJava 11、17、21などを何種類でも同居させられる
- 「このターミナルではJava 17を使う」「こっちではJava 21を使う」といった、画面単位での切り替えが可能になる
- プロジェクトのフォルダ (ディレクトリ) に移動しただけで、自動的にそのプロジェクト用のJavaバージョンに切り替える設定ができる
Eclipse自身も内部に複数のJDKを登録して切り替える機能を持っています。Eclipseでは「ここにあるJavaを使って」とパスを指定するだけです。
チーム開発では「Eclipseを使わずコマンドラインでビルドやテストを行う (CI/CDと呼ばれる自動化環境など)」ことも多いため、IDEの外側(OS側)でバージョンを管理するツールの重要性が非常に高まっています。
SDKMAN! (Software Development Kit Manager)
Javaのバージョン管理ツールの1つにSDKMAN! (エスディーケーマン) があります。コマンド一発で、PC内に複数のJava (JDK) をインストールし、瞬時に切り替えるツールです。主にMacやLinux、Windows (WSL環境) で広く使われています。現代のJava・JVM言語 (KotlinやGroovyなど) の開発において、圧倒的なシェアを持つデファクトスタンダードのツールです。Javaだけでなく、ビルドツール (MavenやGradle) のバージョン管理もまとめて行えます。
| よく使うコマンド例 | 説明 |
| sdk list java | インストール可能な世界中のJDK(Amazon、Eclipse、Oracle等)の一覧を表示 |
| sdk install java 21.0.2-tem | Eclipse TemurinのJava 21を一瞬でインストール |
| sdk use java 17.0.10-tem | 現在の画面のJavaを一時的に17に切り替える |
| sdk default java 21.0.2-tem | PC全体の標準のJavaを21に固定する |
asdf (アズドフ)
Java専用ではなく、プログラミング言語全般 (Ruby、Python、Node.js、Javaなど) のバージョンを、これ1つで一元管理できる強力なマルチツールです。プロジェクトのフォルダ内に .tool-versions というファイルを置いておくだけで、そのフォルダに移動した瞬間にJavaのバージョンが自動で切り替わります。Web系の多言語を扱う現場で好まれます。
EnvManager
Windowsの通常のコマンドプロンプトやPowerShell環境の場合、SDKMAN!がそのままでは動きにくいことがあります。Windows専用に作られたバージョン管理ツール(jenv for Windows など)を使うか、あるいは手動でフォルダを分けて配置し、Eclipse側で切り替える運用をすることがあります。
コメント