課題:LinuxにおけるJavaバージョン管理の悪夢
午前中はJava 8のプロジェクトをメンテナンスし、午後はJava 11の会議、夜には最新のJava 21を試してみたい……。そんな経験はありませんか?DNFで直接Javaをインストールしている場合、バージョン間の切り替えは非常に面倒です。プロジェクトごとにalternativesコマンドに苦戦したり、.bashrcのJAVA_HOMEを手動で修正したりする必要があります。
実際、Fedoraは開発の柔軟性よりもOSの安定性を優先しています. FedoraのOpenJDKパッケージはシステムアプリケーションの実行には適していますが、コーディング中に頻繁にバージョンを切り替えるようには設計されていません。
なぜ従来の方法ではなくSDKMAN!を使うべきなのか?
開発環境を管理する際の違いを、以下の比較表で確認してみましょう。
| 比較項目 | DNF(Fedoraリポジトリ) | 手動ダウンロード(.tar.gz) | SDKMAN!を使用 |
|---|---|---|---|
| インストール速度 | 速い(1コマンド) | 遅い(解凍、パス設定) | 非常に速い(1コマンド) |
| バージョン切り替え | 困難(長いコマンドが必要) | 非常に困難(設定修正) | 2秒で完了(1コマンド) |
| リポジトリの豊富さ | 制限あり(OpenJDKのみ) | サイトから探す | 100以上のビルド(Oracle, Zulu, Temurin…) |
Fedoraを2年間使い続けた私の経験から言えば、開発環境とOS環境は完全に分離すべきです。JDKの管理にはSDKMAN!を、IDEの管理にはJetBrains Toolboxを使用します。この方法ならシステムを常にクリーンに保てます。
ステップ1:SDKMAN!をサクッとインストールする
SDKMAN!は、数百もの SDKをインストール・切り替えできる強力なコマンドラインツールです。まず、SDKMAN!がパッケージの解凍に使用するzipとunzipをインストールします。
sudo dnf install zip unzip curl
次に、自動インストールスクリプトを実行します。
curl -s "https://get.sdkman.io" | bash
ターミナルを再起動せずにすぐに使い始めるには、以下のコマンドを実行します。
source "$HOME/.sdkman/bin/sdkman-init.sh"
ヒント:sdk versionを入力して確認してください。具体的なバージョンが表示されれば成功です。
ステップ2:プロフェッショナルな複数JDKバージョンの管理
利用可能なJavaのリストを表示するには、sdk list javaコマンドを使用します。例えば、非常に安定性が高いTemurin(Eclipse Adoptium)のJava 17と21をインストールする場合は以下の通りです。
# Java 17 LTSをインストール
sdk install java 17.0.10-tem
# 最新のJava 21 LTSをインストール
sdk install java 21.0.2-tem
古いプロジェクトのためにJava 17へ素早く切り替えたいですか?sdk use java 17.0.10-temと入力するだけです。新しく開くすべてのターミナルでJava 21を使用したい場合は、defaultコマンドを使います。
sdk default java 21.0.2-tem
ステップ3:MavenとGradleを同期してインストール
DNFでMavenをインストールするのは避けましょう。バージョンが古いことが多いからです。SDKMAN!経由で直接インストールすれば、Mavenは現在有効なJAVA_HOMEを自動的に認識し、ビルド時のバージョン競合を防げます。
sdk install maven
sdk install gradle
ステップ4:JetBrains ToolboxでIntelliJ IDEAをインストール
Fedoraにおいて、JetBrains ToolboxはIDEを管理する最良の方法です。ワンクリックでアップグレードでき、手動で.tar.gzファイルをダウンロードするのと比べて約15分の節約になります。
- 公式サイトからJetBrains Toolboxをダウンロードします。
- ファイルを解凍し、実行ファイルを実行してインストールします。
- Toolboxを開き、IntelliJ IDEA(UltimateまたはCommunity)を選択してインストールします。
重要なヒント:IntelliJでProject SDKを設定する際、パスを/home/ユーザー名/.sdkman/candidates/java/currentに指定してください。ターミナルでsdk defaultを変更すると、IntelliJも再設定なしで自動的に追従します。
ステップ5:大規模プロジェクト向けのパフォーマンス最適化
Fedoraは最新のカーネルを使用しているため、JVMのパフォーマンスは非常に良好です。しかし、重いマイクロサービスプロジェクトでは、ファイル制限(ulimit)を増やすことをお勧めします。/etc/security/limits.confファイルの末尾に以下の行を追加してください。
* soft nofile 65536
* hard nofile 65536
これにより、大規模プロジェクトでIntelliJが数千ものファイルをインデックスする際に発生する「Too many open files」エラーを回避できます。
まとめ
FedoraでSDKMAN!とIntelliJ IDEAを組み合わせることで、macOSのようなスムーズな開発体験が得られます。環境変数や古いインストールパッケージによるシステムの汚れに悩まされることはもうありません。Fedoraのターミナルの力を活用して、今すぐ開発ワークフローを最適化しましょう。

