こんにちは、OSSよろず相談室のサポートエンジニアの神﨑です。
Linux(RHEL系)サーバーでJava環境(OpenJDK)を構築しようとした際、パッケージが2つあって迷ったことはありませんか?
java-21-openjdkjava-21-openjdk-devel
「どっちを選べばいいの?」「両方インストールが必要?」といった疑問に向けて、今回は2つの違いや依存関係の仕組み、実際の選び方を分かりやすく解説します!
1. 結論:違いは「実行のみ」か「開発ツールも含むか」
結論から言うと、一番の違いは「コンパイラなどの開発用ツールが入っているかどうか」です。
- java-21-openjdk(JRE:実行環境)
Javaプログラムを「動かすだけ」のパッケージ。 - java-21-openjdk-devel(JDK:開発環境)
動かす機能に加えて、プログラムを「作る(コンパイルする)」ためのツールが入ったパッケージ。
「devel」は Development(開発)の略なので、開発用ツールが付いているかどうかと覚えるとスッキリしますね。
2. パッケージの具体的な中身と役割
① java-21-openjdk
いわゆる JRE(Java Runtime Environment) に相当します。Webアプリなどをサーバー上で動かすために必要な実行エンジン(JVM)や基本ライブラリが入っています。
② java-21-openjdk-devel
いわゆる JDK(Java Development Kit) に相当します。java-21-openjdk の機能を丸ごと含んだ上で、以下のような開発用コマンドが追加されます。
javac:ソースコード(.java)を機械が読めるクラスファイルに変換するコンパイラjar:複数のファイルを1つにまとめるパッケージングツールjavadoc:ドキュメントを自動生成するツール
3. よくある疑問:「両方インストールする必要はある?」
構築手順を調べるときに「実行用と開発用、どちらも指定してインストールすべき?」と迷うポイントですが、結論から言うと java-21-openjdk-devel だけ指定すればOK です!
Linuxのパッケージ管理(dnf / yum)には「依存関係」という仕組みがあります。devel の内部仕様として java-21-openjdk が必要だと定義されているため、以下のコマンドを1回打つだけで自動的に両方が揃います。
sudo dnf install java-21-openjdk-devel
「devel を入れれば実質的に両方入る」と覚えておけば間違いありません。
4. サーバーの用途に応じたおすすめの選び方
実際の現場では、サーバーの役割によって以下のように使い分けます。
| サーバーの用途 | 選ぶパッケージ | 理由 |
|---|---|---|
| 本番環境・ステージング環境 | java-21-openjdk |
アプリの実行しか行わないため。不要な開発ツールを入れず、シンプルかつ安全に保ちます。 |
| 開発環境・ビルドサーバー | java-21-openjdk-devel |
ソースコードをコンパイル(javac)したり、ビルド作業を行う必要があるため。 |
まとめ
java-21-openjdkは「実行専用環境(JRE)」java-21-openjdk-develは「開発環境(JDK)」で、実行環境も含まれているdevelをインストールすれば、依存関係で両方まとめて導入される
サーバーを構築する際は、「そのサーバーでソースコードのコンパイルをするかどうか」を基準に選んでみてくださいね!
参考文献(公式ドキュメント)
Red Hat公式のドキュメントも併せてご参照ください。

