Info

jdk と jre の 違い―初心者のための完全ガイド

jdk と jre の 違い―初心者のための完全ガイド
jdk と jre の 違い―初心者のための完全ガイド

Javaを学び始めたとき、「JDK」と「JRE」の違いだけで混乱する人が多いです。これらはどちらもJavaを使うために必要ですが、機能や用途が違います。この記事では、実際に使い分けができるように、分かりやすく解説します。

まずは核心に向かうための概要として、JDKとJREの基本的な違いを簡潔にまとめました。その後、開発環境や実行環境での具体的な差異、使用時の注意点などを順に掘り下げます。最後に、今すぐ導入できるおすすめツールも紹介します。

何が違う? JDK と JRE の 直接比較

JDK には「開発に必要なすべてのツール」が含まれています。これは、コンパイラ(javac)やデバッガー、ドキュメント生成ツール(javadoc)などを指します。JDK は開発者向けに設計されており、ソースコードからバイナリを作成できます。

一方、JRE は「実行時オブジェクトランタイム」の略で、Javaアプリケーションを動かすためだけの環境です。プログラムをコンパイルする機能はなく、実行に必要なランタイムライブラリとJava仮想マシン(JVM)だけが含まれています。

つまり、開発なのか単に実行なのかによって、JDK を使うべきか JRE を使うべきかが決まります。プログラムの実行だけであれば JRE で十分ですが、作るなら必ず JDK が必要です。

1. 仕様の詳細とインストールの違い

JDK はソースコードをビルドする時間に必要なコンパイラが一式揃っているため、その分ファイルサイズが大きくなります。通常、JDK1.8は約200MB、JDK17は約500MBに達します。

  • JDK: コンパイル・デバッグ・実行
  • JRE: 実行のみ

インストール時の手順も異なります。JDK をインストールすると環境変数 PATH にコンパイラのパスが追加されるため、ターミナルからすぐに javac が呼び出せます。JRE ではその機能は提供されません。

インストール後、JDK はバージョン管理ツール(SDKMAN!やasdf)で複数バージョンを簡単に切り替えられます。JRE ではそのようなマネージャは稀です。開発環境を構築する際は、必ず JDK を導入しましょう。

2. ランタイム機能と API の拡張

両者とも Java ランタイムに同じオペレーショナル・システムが利用されますが、JDK には付随する API が豊富に揃っています。例えば、java.appletjavax.swing などの GUI ライブラリは JDK でのみ簡単に利用できます。JRE では、実行時に必要なモジュールだけが含まれます。

  1. コンパイラ:javac
  2. デバッガー:jdb
  3. ドキュメント生成:javadoc
  4. 実行環境:java

JDK には通常、JRE とみなされる「runtime」と「plugin」だけでなく、ビルドやテストのための多くのツールが統合されています。したがって、開発者は JDK を使うことで、チェックツールやパフォーマンス測定ツールもワンパッケージで入手できます。

3. バージョン管理と互換性

Java は LTS(Long Term Support)バージョンが発表されるため、企業は安定版を選ぶ傾向があります。JDK 17 は 2021 年の LTS で、JRE を使う場合は同一年のリリースが必要です。バージョンがずれると、ライブラリやクラスの互換性に問題が出ることがあります。

バージョン JDK JRE
8 Java 8 LTS Java 8 LTS
17 Java 17 LTS Java 17 LTS

従って、JDK と JRE のバージョンは常に一致させるようにしましょう。そうすれば、ビルド時と実行時の差異から起きるバグを防ぐことができます。

4. ライセンスと配布形式

  • セース: JDK は Oracle JDK と OpenJDK の両方が存在します。
  • 配布: Oracle JDK は商用利用に制限がありますが、OpenJDK ならフリーです。

企業がローカルサーバーにインストールする場合、OpenJDK が普及しています。実際、2023 年の業務アプリケーションで使用されている JDK の 70% が OpenJDK です。JRE も同様に OpenJDK 版が多いですが、Oracle の商用サポートが必要な場合は Oracle JDK を選択します。

また、配布形式は ZIP とインストーラが主流です。ZIP は手動で構成するのに好き、インストーラは自動で環境変数を設定します。開発者は使い易いインストーラを選ぶと、作業効率が大幅に向上します。

5. Java エコシステムでの実務的役割

製造業や金融業界では、ビルドパイプライン に JDK が必須です。CI/CD システム(JenkinsやGitHub Actions)では、ジョブを実行するマシンに JDK をインストールしておく必要があります。実行マシンだけの場合は JRE で十分ですが、テストフェーズでコードをビルドする段階では JDK が必須となります。

フェーズ 必要なツール
開発 JDK + IDE
ビルド JDK + Maven/Gradle
デプロイ JRE (または JDK)

さらに、クラウド上のコンテナ環境(Docker)では、openjdk:17-jdk-slim などが使われます。ここでは JDK が基本イメージとして取り込まれ、必要に応じて JRE だけに切り替えることも可能です。運用コストを抑えつつ、開発フレキシビリティを確保するために、JDK をベースにして比合理化するケースが増えています。

6. まとめと学習リソース

これまで、JDK は開発を含む全機能、JRE は実行だけ という核心を確認しました。また、バージョン整合性、ライセンス形式、エコシステム内での役割まで掘り下げました。今後の開発において、適切に選択することで手間とコストを大幅に削減できます。

この内容を実践に落とし込むために、まずは公式サイトから最新の openjdk をダウンロードし、java -version で確認してみましょう。もし自分のプロジェクトが複数バージョンを必要とする場合は、SDKMAN!asdf で管理すると便利です。これらの無料ツールは GitHub に公開されており、初心者から上級者まで幅広く支持されています。ぜひ試してみてください!