Java Runtime Environment(JRE)は、
Javaプラットフォーム上で
アプリケーションソフトウェア(
Javaアプリケーション)を実行するために不可欠な
ソフトウェア群です。これは、単に
Javaプログラムを動かすだけでなく、その基盤となる環境を提供します。JREは、オラクル(旧
サン・マイクロシステムズ)による公式実装の他に、
OpenJDKコミュニティによるオープンな実装、
IBMなどのライセンスを受けたサードパーティによる実装が存在し、多様な環境に対応しています。
JREの構成要素
JREは主に二つの要素から成り立っています。
1.
Java仮想マシン (JVM): これは、
Javaバイトコードを実行する仮想的なコンピュータです。
Javaプログラムは、特定のハードウェアではなく、JVM上で動作するようにコンパイルされるため、異なるプラットフォーム間での互換性が保たれます。
2.
アプリケーションプログラミングインタフェース (API): これは、開発者が
Javaプログラムを作成する際に使用するライブラリの集合です。APIは、標準
Javaクラスライブラリや拡張ライブラリを提供し、プログラムの多様な機能を実装するのに役立ちます。
JVMとAPIは互いに連携して動作し、JREとして一つのパッケージにまとめられています。これは、JVMがハードウェア、APIが
ソフトウェアインターフェースという関係に似ており、一体となって
Javaアプリケーションを円滑に実行します。
JREとJDK
JREは、
Javaアプリケーションの開発に必要なツールを含む
Java Development Kit(JDK)にも含まれています。JDKは、
Javaコンパイラやデバッガなど、開発に必要なツールを提供し、JREは、開発されたアプリケーションを実行するための環境を提供します。そのため、
Java開発者はJDKをインストールし、
Javaアプリケーションの利用者はJREをインストールするというのが一般的な使い分けです。
JREの重要性
Javaアプリケーションは、対応するJREがインストールされていなければ動作しません。組み込み機器ではJREが標準インストールされていることが多いですが、デスクトップ環境では、JREを別途インストールする必要がある場合があります。
JREのバンドルと互換性
かつては、javapackagerというツールを使ってJREをアプリケーションパッケージに同梱し、再配布する形態もサポートされていました。JREは基本的に後方互換性を維持しており、古いJDKで作成された
Javaアプリケーションを新しいJRE上で動作させることができます。しかし、新しいJDK/JREで導入された非互換性によって、アプリケーションが正常に動作しなくなることもあります。また、
Javaアプレットのように、古いバージョンのJDK/JREにしか含まれていないコンポーネントもあり、新しいバージョンでは利用できない場合もあります。逆に、
JavaFXのように、かつてはJDK/JREに標準で含まれていたものが、後に独立して提供されるようになったコンポーネントもあります。
Java 10までのJREには、
Java Web Startも含まれていました。これは、ウェブブラウザ上で
Javaアプレットを動作させたり、
Java Web Start対応のアプリケーションを起動するために使用され、ブラウザの
プラグインとして動作します。しかし、ブラウザ技術の進化に伴い、
Javaアプレットや
Java Web Startは徐々に利用されなくなっています。
セキュリティ上の注意
JREのアップデートでは、旧バージョンが削除されない場合があります。セキュリティ上の脆弱性が発見されたり、サポートが終了した古いバージョンの
Java (JDK/JRE) をシステムに残しておくと、重大なセキュリティリスクが生じるため、古いバージョンは手動で削除することが強く推奨されます。
関連事項
Java'>
Java
Java%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0'>
Javaプラットフォーム
Java%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3'>
Java仮想マシン (JVM)
Java_Development_Kit'>
Java Development Kit(JDK、
Java開発キット)
*
IBM_J9'>
IBM J9
参照
Java | Oracle