JREは何ですか?
JRE(Java Runtime Environment)または実行環境は、コンピュータのオペレーティングシステム上で実行され、特定のJavaプログラムの実行に必要なクラスライブラリやその他のリソースを提供するソフトウェアです。
JREはJavaプログラムの開発と実行に関連する3つのコンポーネントのうちの1つです。残りの2つのコンポーネントは次のとおりです:
JREには何が含まれていますか?
JVMの他に、JREにはJavaアプリケーションを最大限に活用するためのさまざまなツールや機能が含まれています。これらのツールや機能は次のようなものです:
デプロイメント技術
デプロイメント技術(Deployment technologies)として、Java Web StartやJavaプラグインなどがJREのインストールに統合されており、アプリケーションの起動を容易にし、将来のJavaの更新に対する高度なサポートを提供します。
開発ツールセット
JREには、開発者がユーザーインターフェースを改善するための設計されたツールセットも含まれています。以下にいくつかのツールセットを挙げます:
Java 2D:Java言語で2Dグラフィックスを描画するために使用されるアプリケーションプログラミングインタフェース(API)です。開発者は豊富なユーザーインターフェース、特殊効果、ゲーム、アニメーションを作成できます。
Abstract Window Toolkit(AWT):オブジェクト、ボタン、スクロールバー、ウィンドウを作成するために使用されるグラフィカルユーザーインターフェース(GUI)です。
Swing:別の軽量なGUIで、様々なツールを使用して柔軟なカスタマイズとユーザーフレンドリーな機能を提供します。
統合ライブラリ
Java Runtime Environmentは、開発者がアプリケーションとサービス間のデータ連携をスムーズに行うための統合ライブラリも提供しています。以下にいくつかのライブラリを挙げます:
Java IDL (CORBA): Java IDL (CORBA)は、Javaプログラミング言語で記述された分散オブジェクトをサポートするために共通のオブジェクトリクエストアーキテクチャを使用します。
Java Database Connectivity (JDBC) API: JDBC APIは、リモートリレーショナルデータベース、フラットファイル、スプレッドシートにアクセスするための開発者向けツールを提供します。
Java Naming and Directory Interface (JNDI): JNDIは、モバイルアプリケーションが名前付け規則を使用してデータベースから情報を取得するためのプログラミングインターフェースとディレクトリサービスを提供します。
言語ライブラリとユーティリティ
JREに含まれるjava.langおよびjava.utilパッケージは、Javaアプリケーションの基本的な設計、パッケージバージョンの管理、および監視に使用されます。これらのパッケージのいくつかは次のとおりです:
Collections Framework: コレクションフレームワークは、アプリケーションのデータの格納と処理を改善するために設計された一連のインターフェースで構成される統一されたアーキテクチャです。
Concurrency Utilities: 高性能なマルチスレッドユーティリティを備えた強力なユーティリティパッケージです。
Preferences API: 軽量でクロスプラットフォーム対応の連続性を持つAPIで、複数のユーザーが同じマシン上で独自のアプリケーションオプションのグループを定義できます。
Logging: セキュリティエラー、設定エラー、およびパフォーマンスの問題などのログレポートを作成し、次の分析に使用します。
Java Archive (JAR): クロスプラットフォームで独立したファイル形式で、複数のファイルをJAR形式にパッケージ化することができ、ダウンロードの高速化とファイルサイズの削減が可能です。
JVM và JREはどのように動作しますか?
JREには、JVMとライブラリクラスや開発ツールが含まれています。プログラムは、.java拡張子で書かれ、次のステップでコンパイルされます。コンパイル後、コンパイラはバイトコードを含む.classファイルを生成します。バイトコードはプラットフォームに依存しないため、JREが搭載されたどんなデバイスでも実行できます。ここから、JREの役割が始まります。Javaプログラムを実行するには、JREが必要です。バイトコードの実行フローは次のようになります:
クラスローダー
Javaのクラスローダーは、Javaプログラムの実行に必要なクラスをロードする責任を持つコンポーネントです。クラスローダーは、「遅延読み込み」メカニズムを使用して、プログラムに必要なクラスが要求されるまでロードしません。これにより、メモリの使用を最適化し、Javaプログラムのパフォーマンスを向上させることができます。この段階では、クラスローダーはプログラムの実行に必要なクラスをロードします。クラスローダーはJava仮想マシンへのクラスのロードをサポートします。JVMが起動されると、3つのクラスローダーが使用されます:ブートストラップクラスローダー、拡張クラスローダー、およびシステムクラスローダー。
バイトコード検証
JavaのClassLoaderは、Javaプログラムを実行するために必要なすべてのクラスをロードする役割を持ちます。Javaのクラスは、要求されるまでメモリにロードされないため、JREはClassLoaderを使用して、このプロセスを要求に応じて自動化します。
インタプリタ
インタプリタはJREの別のコンポーネントであり、バイトコードの実行と実行可能なマシンコードの生成を担当します。インタプリタはバイトコードを読み取り、JVMのアーキテクチャで定義されたルールに基づいて実行可能なマシンコードに変換します。また、アクセス権の制御やメモリ制限のチェックなどのセキュリティ機能も提供します。
これらの手順により、プログラムはJREで実行されます。