Javaランタイム環境(JRE)とは
Javaランタイム環境(JRE)の動作について、およびJavaアプリケーションを実行するために他のJavaプラットフォーム・コンポーネントと連携する方法についてご説明します。
IBMのニュースレターを購読する
黒と青の背景画像
JREとは

Javaランタイム環境またはJREは、コンピューターのオペレーティング・システム・ソフトウェア上で動作するソフトウェアのレイヤーで、クラス ライブラリおよびその他のリソースなどの、特定のJavaプログラムの実行に必要なものを提供します。

JREはJavaプログラムを開発し実行するための、相互に関連する3つのコンポーネントのうちの1つです。 他の2つのコンポーネントは次のとおりです。

  •  Java開発キットまたはJDKは、Javaアプリケーションを開発するためのツールセットです。 開発者は、Javaバージョン、パッケージまたはエディション(Java Enterprise Edition(Java EE)、Java Special Edition(Java SE)、Java Mobile Edition(Java ME)に基づいてJDKを選択します。 Javaプログラムの実行はJavaプログラムの開発プロセスの一部であるため、すべてのJDKには常に互換性のあるJREが含まれています。

  • JavaバーチャルマシーンまたはJVMはライブでJavaアプリケーションを実行します。 すべての JREにはデフォルトのJREが含まれていますが、開発者は自身のアプリケーションが必要とする特定のリソースのためJREを自由に別途選択できます。

JDKで作成されたJavaコードと、それをJVM上で動作させるために必要なライブラリを組み合わせて、JREは完成したプログラムを実行するJVMのインスタンスを作成します。 JVMは複数のオペレーティング・システムで使用可能です。また、JREを使って作成されたプログラムは、すべてのオペレーティング・システムで実行されます。 このようにして、どのようなオペレーティング・システムでもJavaプログラムを改修なしで実行できるようにするのがJavaランタイム環境です。

互換性を持つJREを含めたJDKをOracleからダウンロードできます (ibm.com外部のリンク)。

JREの仕組み

JDKとJREは相互に作用しながら、持続可能なランタイム環境を構築し、事実上あらゆるオペレーティング・システム上でJavaベースのアプリケーションをシームレスに実行できるようにします。 以下でJREランタイム・アーキテクチャを構成します。

ClassLoader

Javaクラス・ローダーは、Javaプログラムの実行に必要なすべてのクラスを動的にロードします。 Javaクラスは必要な場合のみメモリにロードされるため、JREはクラス・ローダーを使いオンデマンドでそのプロセスを自動化します。

バイトコード検証器

バイトコード検証器は、Javaコードがインタープリターに転送される前に、そのフォーマットと正確性を確認します。 コードがシステムの整合性やアクセス権に違反している場合、そのクラスは破損しているものとみなされ、ロードされません。

インタープリター

バイトコードが正常にロードされると、JavaインタプリターがJVMのインスタンスを作成し、基礎となるマシン上でJavaプログラムがネイティブに実行できるようにします。

JREの構成要素

Java仮想マシン以外にも、JREはJavaアプリケーションを最大限に活用するための様々な支援ソフトウェア・ツールや機能で構成されています。

デプロイメント・ソリューション

JavaウェブスタートやJavaプラグインなどアプリケーションの起動を簡素化し、将来のJavaアップデートを高度にサポートするデプロイメント技術がJREのインストールの一部として含まれています。

開発ツールキット

JREには、開発者がユーザー・インターフェースを改善するのに役立つように設計されたツールキットが含まれています。 以下が含まれるツールキットもあります。

  • Java 2D: Java言語で2次元グラフィックスを描画するためのアプリケーション・プログラミング・インタフェース(API)です。 開発者は、豊富なユーザー・インターフェース、特殊効果、ゲーム、アニメーションを作成できます。

  • Abstract Window Toolkit(AWT): オブジェクト、ボタン、スクロール・バー、ウィンドウを作成するために使用されるGUI(グラフィカル・ユーザー・インターフェース)。

  • Swing: リッチなウィジェットのセットを使って柔軟かつユーザーフレンドリーなカスタマイズを提供するもう一つの軽量GUIです。

統合ライブラリー

アプリケーションとサービス間のシームレスなデータ接続を開発者が作成できるようにするため、Javaランタイム環境は多くの統合ライブラリを提供しています。 以下が含まれるライブラリーもあります。

  • JavaIDL(CORBA): 共通オブジェクト要求アーキテクチャーを使用して、Javaプログラミング言語で記述された分散オブジェクトをサポートします。

  • JavaDatabase Connectivity(JDBC)API: 開発者が、リモートのリレーションシップ・データベース、フラット・ファイル、スプレッドシートにアクセスできるアプリケーションを作成するためのツールを提供します。

  • JavaNaming and Directory Interface (JNDI):  命名規則でデータベースから情報を取得できるポータブルなアプリケーションを、クライアントが作成するためのプログラミング・インターフェイスとディレクトリ・サービスです。

言語とユーティリティーのライブラリー

JREにはjava.langが含まれています。 そしてjava.utilです。 Javaアプリケーションの設計、パッケージのバージョン管理、管理、監視の基礎となるパッケージです。 以下が含まれるパッケージもあります。

  • Collections Framework: アプリケーション・データの保管とプロセスを改善するために設計されたインターフェースの集合で構成される統合アーキテクチャー。

  • Concurrency Utilities: 高性能なスレッド化ユーティリティーが含まれた強力なフレームワーク・パッケージ。

  • Preferences API: 軽量のクロスプラットフォーム・パーシスタントAPIであり、同じマシン上の複数のユーザーが独自のアプリケーション設定のグループを定義できるようにします。

  • ロギング: 詳細な分析のために、セキュリティー障害、構成エラー、パフォーマンス問題などのログ・レポートが作成されます。

  • Javaアーカイブ(JAR): 複数のファイルをJAR形式でまとめられるプラットフォームに依存しないファイル・フォーマットで、ダウンロード速度の大幅な向上とファイル・サイズの縮小を実現します。
関連ソリューション
アプリケーションの構築とモダナイズ

イノベーションを推進しビジネスを前進させるために、お客様のチームが必要とするスキルとツールを提供します。

アプリケーションの構築とモダナイズの詳細はこちら
OpenJDKとIBM Runtimes for Business

IBM Runtimes for Businessは、オープンソースのJavaランタイム環境のサポートと、Javaアプリケーションのモニターおよび管理機能を提供します。

OpenJDKとIBM Runtimes for Businessの詳細を見る
IBM® WebSphere® Hybrid Edition

WebSphere® Hybrid Editionを活用して、クラウドネイティブな開発、アプリケーションのモダナイゼーション、既存アプリケーションのサポートを推進する方法をご覧ください。

IBM® WebSphere® Hybrid Editionの詳細はこちら
参考情報 Javaとは

Javaが人気のある開発プラットフォームであり続ける理由と、Javaがプロジェクトを加速し、幅広い新しいテクノロジーに対応する方法についてご説明します。

JavaSpring Bootとは

JavaSpringフレームワークによるWebアプリケーションやマイクロサービスの開発を、JavaSpring Bootがどのように簡素化するのかについてご紹介します。

次のステップ

Javaは、多くの組織でアプリケーション開発の重要な部分であり続け、移植可能で拡張性の高いソリューションを作成する際に堅固な基盤を提供します。 OpenJDKとIBM Runtimes for Businessでは、Javaアプリケーションの導入、モニター、管理のための、信頼性が高くコスト効率の良い商用サポートが得られます。

OpenJDKとIBM Runtimes for Businessの詳細はこちら