【Java】JDK と JRE について

Java

Java10 以前

Javaのダウンロードや環境構築を進めていると、「JDK」や「JRE」という語句に出会うことがあると思います。詳細な情報はたくさん得ることができますが、きちんと理解しようとすると必要となる前提知識が多く大変です。

加えて、Java11以降を使用している場合は、あまり意識する必要もないことなのかもしれません。

In this release, the JRE or Server JRE is no longer offered. Only the JDK is offered.
(このリリースでは、JRE または Server JRE は提供されなくなりました。JDKのみが提供されます。)

JDK 11 Release Notes > Important Changes and Information

ただ、使われる語句について全く知らない状態は避けたいかと思いますので、ここでは大まかにイメージを持てるような説明をしていきます。

JDK・JRE とは

一言でいうと、JDKとは開発ツールを含むもの、JREとは実行に必要な最低限のもの、です。

  • JDK(Java Development Kit:Java開発キット)
    • Javaの開発に必要なツール一式
    • 含まれる物の例)javac.exe
  • JRE(Java Runtime Environment:Java実行環境)
    • Javaの実行に必要な最小限の環境
    • 含まれる物の例)java.exe

具体例(javac)

例えば、「Hello World」を出力する Main.java を実行する場合、次の1~3のステップを踏む必要があります。右側に各段階で必要となるツールを記載しています。

  1. ソースファイル( .java )の作成 ← テキストエディタ
  2. クラスファイル( .class )の作成 ← javac.exe
  3. クラスファイル( .class )の実行 ← java.exe

このように整理すると、Javaプログラムの実行という点に限って見れば、コンパイル済みのクラスファイルさえあれば良いことが分かります。クラスファイルの作成までは開発の段階、クラスファイルを指定して呼び出すところからが初めて実行の段階、ということです。

そのため例えば、ソースファイルのコンパイルに必要な javac.exe は、JDKに含まれていてJREには含まれない物の一つになります。

JDK
JRE

java.exe

javac.exe

具体例(Java8)

JDK8 と JRE8 をそれぞれダウンロードして、中身を確認してみます。

Java downloads から Java SE subscribers have more choices までスクロールします。
JDK8のダウンロード
  Java8タブから「Java SE Development Kit」欄のWindowsタブに切り替えます。
 「x64 Compressed Archive」の行より .zip をダウンロードします。
JRE8のダウンロード
  少し下に JRE8 とあり、クリックすると詳細が展開されます。
 「Java SE Runtime Environment」欄のWindowsタブに切り替えます
 「x64 Compressed Archive」の行より .zip をダウンロードします。

Java archive タブの Previous Java releases > Java SE downloads 欄から、任意のバージョンのリンクへ遷移することが可能です。

これらのリンク先を確認すると、Java SE 10 以前は「Java SE Development Kit」と「Java SE Runtime Environment」の両方があるのに対し、Java SE 11 以降は「Java SE Development Kit」だけしかないことが分かります。

In this release, the JRE or Server JRE is no longer offered. Only the JDK is offered.
(このリリースでは、JRE または Server JRE は提供されなくなりました。JDKのみが提供されます。)

JDK 11 Release Notes > Important Changes and Information

ダウンロードした .zip を展開して内容を確認すると、JDKの bin ディレクトリには java.exe のほか開発に必要な javac.exe 等が含まれていたり、JRE自体が含まれていたりすることが分かります。

JDK
java.exe に加え、javac.exejavadoc.exe 等も含まれている。
jre ディレクトリがあり、JRE自体も含まれている。
bin だけでなく src も含まれている。

JRE
java.exe 等、必要最小限の物のみが含まれている。

タイトルとURLをコピーしました