Java ランタイム環境はどのようなものですか?

Java Runtime Environment (JRE) は、Java プログラムを正しく実行するために必要なソフトウェアです。 Java は、現在の多くのウェブおよびモバイルアプリケーションを強化するコンピュータ言語です。JRE は、Java プログラムとオペレーティングシステムの間で通信する基盤となるテクノロジーです。これは、トランスレーターおよびファシリテーターとして機能し、すべてのリソースを提供するため、Java ソフトウェアを作成すると、それ以上の変更を加えることなく、任意のオペレーティングシステムで実行できます。

JRE が重要なのはなぜですか?

ソフトウェアプログラムには、メモリへのアクセスやプログラムファイル、依存関係など他のシステムリソースへのアクセスを提供するランタイム環境が必要です。以前は、ほとんどのソフトウェアがオペレーティングシステムを直接実行環境として使用していました。しかし、これでは、デベロッパーはアプリケーションを実行させたいオペレーティングシステムごとに異なるコードを書かなければならないことになります。この問題を解決するために生まれたのが、Java ランタイム環境 (JRE) 技術です。

 

JRE は、Java プログラムを正常に実行するために必要な、3 つの Java プラットフォームコンポーネントのうちの 1 つです。Java 開発キット (JDK) と Java 仮想マシン (JVM) は、他の 2 つのコンポーネントです。

Java 開発キット

JDK は、Java アプリケーションの開発に使用できるソフトウェアツールの集合体です。JDK をダウンロードし、インストールすることで、開発環境に JDK をセットアップすることができます。使用する Java のバージョンに合った JDK ソフトウェアのバージョンを選択します。例えば、Java Standard Edition、または Java SE を使用する場合は、Java SE JDK が必要です。

Java 仮想マシン

JVM は、Java プログラムを 1 行ずつ実行するソフトウェアです。デベロッパーは、Java アプリケーションの実行時に、プログラムリソースを管理するために JVM の設定を行います。例えば、JVM のメモリ設定を変更し、Java アプリケーションが実行時に使用する内部メモリの量を確認することができます。

Java プログラミング言語における JRE の役割

JRE は、JDK を使用して作成した Java コードと、ライブラリと呼ばれる追加の組み込みコードを結合します。そして、最終的に Java プログラムを実行する JVM インスタンス、またはローカルコピーを作成します。JVM は複数のオペレーティングシステムで利用可能で、JRE はすべての種類の JVM で動作する Java コードのコピーを 1 つ生成します。このように、JRE は、Java アプリケーションのプラットフォーム独立性を促進します。一度記述すれば、どこでも実行できるのです。

JRE、JVM、JDK の違い

JDK は、JRE の上位に位置するソフトウェア層で、コンパイラやデバッガなど、ソフトウェア開発環境によくあるツールを含んでいます。JDK では、英語のような構文でコードを記述します。JDK はそれをコンパイルして、バイトコードを JRE に渡します。一方、JRE には、クラスライブラリ、サポートファイル、JVM が含まれています。これらのソフトウェアコンポーネントを使用して、あらゆるデバイスでバイトコードを実行します。

JRE の仕組みは?

Java ランタイム環境 (JRE) は、オペレーティングシステムの上で動作し、Java 固有の追加リソースを提供します。Java 開発キット (JDK) と JRE は相互に作用して、あらゆるマシンで Java プログラムファイルを実行する持続可能なランタイム環境を構築します。JRE は、3 つのコアコンポーネントを使用して動作します。

ClassLoader

Java クラスライブラリには、必要に応じて呼び出すことができる、事前に記述されたコードの集合体が含まれています。ユーザーからの入力の受け取り、ユーザーへの出力の表示など、一般的で自明でないタスクの組み込みメソッドを提供し、Java デベロッパーの仕事を簡素化します。すべての Java プログラムは、いくつかのクラスライブラリを参照します。Java ClassLoader は、必要なすべてのクラスファイルをオンデマンドで Java 仮想マシン (JVM) に動的にロードします。

バイトコードベリファイア

JDK には、お客様が書いた英語のようなコードを、Java バイトコードと呼ばれる機械語版に変換するコンパイラがあります。JRE のバイトコードベリファイアは、Java コードを JVM にロードする前に、そのフォーマットと正確性をチェックします。例えば、コードがシステムの整合性やアクセス権に違反している場合、JRE はクラスファイルをロードしません。

インタプリタ

バイトコードが正常にロードされた後、Java インタプリタは、基礎となるマシン上で Java プログラムを実行する JVM インスタンスを作成します。

JRE のコンポーネントはどのようなものですか

コアコンポーネント以外にも、Java ランタイム環境 (JRE) には、Java プログラムをより効率的に実行するのに役立つソフトウェアコンポーネントがいくつか含まれています。次に例をいくつか示します。

開発ツール

JRE には、ユーザーインターフェイスツールキットのような開発ツールが含まれており、アプリケーションの品質を向上させるために使用することができます。次に例をいくつか示します。

Java 2D

Java 2D は、アプリケーションプログラミングインターフェイス (API) であり、これを使用して、Java 言語で 2 次元グラフィックを描き、リッチなユーザーインターフェイス、ゲーム、アニメーション、特殊効果を作成することができます。

Swing

Swing は、柔軟でユーザーフレンドリーなカスタマイズを提供する軽量のグラフィカルユーザーインターフェイス (GUI) です。

Abstract Window Toolkit

Abstract Window Toolkit (AWT) は、ボタン、ウィンドウ、スクロールバーなどの UI オブジェクトを作成するために使用する GUI です。

デプロイソリューション

JRE には、ソフトウェアの変更をアプリケーションのユーザーに公開するプロセスを簡素化する技術が含まれています。また、これらの技術は、アプリケーションの更新を高度にサポートします。Java Web Start や Java プラグインなどのデプロイ技術は、JRE のインストールの一部として含まれています。これらの技術は、アプリケーションのアクティベーションを簡素化し、また、JRE の将来のアップデートに対する高度なサポートを提供します。次に例をいくつか示します。

Java Web Start

Java Web Start を使用すると、ウェブブラウザからワンクリックで全機能を備えたアプリケーションを起動することができます。

Java プラグイン

Java プラグインは、一般的なブラウザと Java プラットフォーム間の接続を確立するため、デスクトップブラウザ内でウェブサイトアプレットを実行できます。

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

Java クラスファイルの集合体は、Java パッケージと呼ばれます。JRE には、バージョニング、管理、およびモニタリングをサポートする Java パッケージがいくつか含まれています。以下のパッケージはその一例です。

コレクションフレームワーク

コレクションフレームワークは、アプリケーションデータの保存と処理を改善するためのインターフェイスを含む、統一されたアーキテクチャです。

Preferences API

Preferences API は、同じマシン上の複数のユーザーが、独自のアプリケーション設定グループを定義できるようにします。

ロギング

ロギングパッケージは、セキュリティ障害、パフォーマンス問題、設定エラーなどのインシデントのトラブルシューティングのためのログレポートを作成します。

Java アーカイブ

Java アーカイブ (JAR) は、プラットフォームに依存しないファイルフォーマットです。複数のファイルをバンドルすることで、アプリケーションのファイルサイズを縮小し、ダウンロード速度を大幅に向上させることができます。

統合ライブラリ

JRE には、デベロッパーがサービスとアプリケーションの間でシームレスなデータ接続を作成するのを支援する、いくつかの統合ライブラリが含まれています。次にライブラリの例をいくつか示します。

Java IDL

Java インタフェース定義言語 (IDL) は、Common Object Request Broker Architecture (CORBA) に基づいており、分散データオブジェクト、つまり、ネットワーク全体の異なるプラットフォームで相互作用するオブジェクトをサポートします。例えば、Java IDL は、Java で書かれたオブジェクトと、C、C++、COBOL などの他の言語で書かれたオブジェクトとの相互作用を可能にします。

Java データベース接続

デベロッパーはJava データベース接続 (JDBC) API を使用して、遠隔地のデータベース、スプレッドシート、ファイルにアクセスできるアプリケーションを作成します。

Java Naming and Directory Interface

Java Naming and Directory Interface (JNDI) は、命名規則を使用して外部データベースから情報を取得するポータブルなアプリケーションをクライアントが作成できるようにするためのディレクトリサービスです。

AWS SDK for Java とは

AWS Software Development Kit (SDK) for Java は、Java のデベロッパーにとってなじみが深く整合性のあるライブラリーを一式提供し、AWS サービスを簡単に利用できるようにします。また、開発を簡素化するための高度の抽象化もサポートしています。AWS に焦点を当てたオープンソースの Java ライブラリは、コード例と Java API リファレンスガイドとともに利用できます。

 

GitHub にあるAWS SDK for Java 2.0 のコード例には、アプリケーションの開発を加速するのに役立つ AWS サービスの Java コード例と実際のユースケースが含まれています。さらに、AWS SDK for Java API リファレンスガイドでは、最新バージョンの AWS SDK for Java の API オペレーションについて説明しています。また、サポートされている各ウェブサービスプロトコルについて、リクエスト、レスポンス、およびエラーのサンプルが掲載されています。

 

AWS SDK for Java デベロッパーガイドを使用して、AWS SDK for Java の使用を開始するか、AWS Java デベロッパーセンターにアクセスしてください。                                       

AWS での次のステップ