【Linux】【OpenJDK】java-21-openjdk と -devel の違いとは?どっちを入れるべきか分かりやすく解説

こんにちは、OSSよろず相談室のサポートエンジニアの神﨑です。

Linux(RHEL系)サーバーでJava環境(OpenJDK)を構築しようとした際、パッケージが2つあって迷ったことはありませんか?

  • java-21-openjdk
  • java-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公式のドキュメントも併せてご参照ください。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。
エンジニア募集中!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です