Java Runtime Environment

Java Runtime Environment（Java実行環境、JRE）とは、コンピュータシステム上でJavaプラットフォーム用のアプリケーションソフトウェア（Javaアプリケーション）を動かせるようにするソフトウェア群である。Java Development Kit から開発以外には不要なファイルを除去したものである。

Java 10 まではオラクル（旧サン・マイクロシステムズ）は JRE を配布していたが、2018年9月の Java 11 にて廃止した。オラクルは JRE を OS にインストールするのではなく、アプリケーションごとに OpenJDK のサブセットを同梱配布する方法を推奨していて、それゆえ廃止された。ただし、OpenJDK から派生して作られた JRE をいくつかの組織が配布しているAndroidのJava実行環境は正式にライセンスされたJREではなく、またDalvik仮想マシン/Android Runtimeは正式なJava仮想マシンとの互換性がない。。例えば Eclipse Temurin の JDK 25 の場合、x64 の Linux 版では、JDK は 140MB なのに対して、JRE は 61MB と配布サイズが小さくなる。ただし、Docker の場合は、JRE よりも jlink を使用することを薦めている。

 Java 10までのJRE 
JREのソフトウェア群はJava仮想マシン (JVM) とアプリケーションプログラミングインタフェース (API) から成り立っている。APIはエディション（プロファイル）に応じて、標準Javaクラスライブラリの集合や拡張ライブラリなどを提供する。仮想マシンとAPIは互いに互換性がなければならず、それゆえJREとして共にバンドルされている。これは仮想マシンがプロセッサであり、APIがユーザインタフェースであるような仮想的なコンピュータと考えることができる。

JREは、Javaアプリケーション開発に必要なJavaコンパイラなどを含むソフトウェア開発キット (SDK) であるJava Development Kit（JDK、Java開発キット）にも同梱されている。

Javaアプリケーションは対応するJREがなければ動作させることができない。Java互換の組み込み機器では通例JREが標準インストールされているが、デスクトップマシンでは、JREが標準インストールされていないこともあり、その場合はJREを事前にインストールする必要がある。JDK 10までは、javapackagerと呼ばれるツールを利用し、JREをアプリケーションパッケージにプライベートモジュールとして同梱（バンドル）・再配布する形態もサポートされていたjavapackager。JREは基本的に後方互換性を保っており、古いJDKを利用して作成されたJavaアプリケーション（JAR）を新しいJRE上で動作させることもある程度可能であるが、新しいバージョンのJDK/JREで持ち込まれた非互換性により、アプリケーションが正常に動作しなくなることもあるJDK 8の互換性ガイド。Javaアプレットなど、一部のソフトウェアコンポーネントは古いバージョンのJDK/JREにしか含まれておらず、新しいバージョンのJDK/JREでは利用不可能であるものもある。JavaFXのように、かつてJDK/JREに標準で含まれていたものの、のちに分離・独立して個別提供されるようになったコンポーネントもある。

Java 10までのJREにはJava Web Startも同梱されていた。インストール時にMozilla Firefox、Opera、Internet ExplorerなどのウェブブラウザにJava Plug-inをインストールするかどうかを尋ねられる。これはブラウザでJavaアプレットを動かし、Java Web Start対応Javaアプリケーションを起動できるようにするために必要なものであり、単純にFlashをブラウザ上で直接実行したり、ブラウザ外部のメディアプレーヤーを起動したりといったものと同じプラグインの一種である。

JREのアップデートには、旧バージョンを削除しないものがあった。セキュリティホールが発見されている、あるいはサポートが終了している旧バージョンのJava (JDK/JRE) をシステムに残しておくと、重大なセキュリティリスクが生じるため、旧バージョンを手動で削除することが強く推奨されている古いバージョンのJavaをシステムからアンインストールしなければならないのはなぜですか。。

 関連項目 

 Java
 Javaプラットフォーム
 Java仮想マシン (JVM)
 Java Development Kit（JDK、Java開発キット）
 IBM J9

参照

 外部リンク 
 Java | Oracle

Category:Java
Category:Javaプラットフォーム