JDKとJREとJVMの比較 Java – それらの違い
JDK、JRE、および JVM の主な違い
- JDKはソフトウェア開発キットですが、JREはソフトウェアバンドルであり、 Java JVM はバイトコードを実行するための環境ですが、実行するプログラムです。
- JDKの完全な形式は Java 開発キットですが、JREの完全な形式は Java ランタイム環境ですが、JVMの完全な形式は Java 仮想マシン。
- JDK と JRE はプラットフォームに依存しますが、JVM はバイトコード レベルではプラットフォームに依存しませんが、プラットフォーム固有の実装に依存します。
- JDK には、開発、デバッグなどのためのツールが含まれています。JRE にはクラス ライブラリおよびその他のサポート ファイルが含まれていますが、ソフトウェア開発ツールは JVM には含まれていません。
- JDK にはインストーラーが付属していますが、JRE にはソース コードを実行するための環境のみが含まれていますが、JVM にはソフトウェア JDK と JRE の両方がバンドルされています。
JDKとは?
JDKはアプレットや Java アプリケーション。JDKの完全な形式は Java 開発キット。 Java 開発者はこれを Windows, macOS, Solaris、Linux。JDKはコーディングと実行に役立ちます Java プログラム。同じコンピュータに複数の JDK バージョンをインストールできます。
JREとは?
JREは他のソフトウェアを実行するために設計されたソフトウェアの一部です。クラスライブラリ、ローダークラス、JVMが含まれています。簡単に言えば、 Java プログラムを実行するにはJREが必要です。プログラマーでない場合は、 JDKをインストールします、実行するためのJREだけ Java プログラム。ただし、すべてのJDKバージョンには Java ランタイム環境なので、PCにJREを別途ダウンロードしてインストールする必要はありません。JREの完全な形式は次のとおりです。 Java ランタイム環境。
JVMとは何ですか?
JVMは、アプリケーションを動作させるための実行環境を提供するエンジンです。 Java コードやアプリケーション。 Java バイトコードを機械語に変換する。JVMは Java 実行環境(JRE)。個別にダウンロードしてインストールすることはできません。JVMをインストールするには、JREをインストールする必要があります。JVMの完全な形式は次のとおりです。 Java 仮想マシン.
他の多くのプログラミング言語では、コンパイラは特定のシステム用のマシンコードを生成します。しかし、 Java コンパイラは、JVM と呼ばれる仮想マシン用のコードを生成します。
なぜ JDK を使用するのでしょうか?
JDK を使用する重要な理由は次のとおりです。
- JDKには、 Java プログラムとそれを実行するための JRE です。
- コンパイラが含まれています。 Java アプリケーション ランチャー、Appletviewer など。
- コンパイラは、 Java バイトコードに変換します。
- Java アプリケーション ランチャーは JRE を開き、必要なクラスをロードして、そのメイン メソッドを実行します。
JRE を使用する理由
JRE を使用する重要な理由は次のとおりです。
- JREにはクラスライブラリ、JVM、その他のサポートファイルが含まれています。 Java デバッガー、コンパイラーなどの開発。
- math、swingetc、util、lang、awt、ランタイム ライブラリなどの重要なパッケージ クラスを使用します。
- 走らなければならない場合 Java アプレットを使用する場合は、システムに JRE がインストールされている必要があります。
なぜ JVM なのか?
JVM を使用する重要な理由は次のとおりです。
- JVMはプラットフォームに依存しない実行方法を提供します Java ソースコード。
- 多数のライブラリ、ツール、フレームワークがあります。
- 一度走ったら Java プログラムはどのプラットフォームでも実行でき、多くの時間を節約できます。
- JVMにはJIT(Just-in-Time)コンパイラが付属しており、 Java ソース コードを低レベルのマシン言語に変換します。そのため、通常のアプリケーションよりも高速に実行されます。
JDKの特徴
JDK の重要な機能は次のとおりです。
- これにより、単一の catch ブロックで複数の拡張機能を処理できるようになります。
- JDK には、JRE が持つすべての機能が含まれています。
- コンパイラやデバッガなどの開発ツールが含まれています。
- JDKは開発と実行のための環境を提供します Java ソースコード。
- それはにインストールすることができます Windows、Unix、および Mac オペレーティング システム。
- ダイヤモンド演算子は、正確なインターフェースを記述する代わりに、ジェネリック型インターフェースを指定する場合に使用できます。
JREの特徴
JRE の重要な機能は次のとおりです。
- Java ランタイム環境は、JVM が実際に実行されるために使用するツールのセットです。
- JREには、次のようなデプロイメントテクノロジが含まれています。 Java Webスタートと Java プラグイン。
- 開発者はJREでソースコードを簡単に実行できますが、 Java プログラム。
- 次のような統合ライブラリが含まれています Java データベース接続(JDBC)、リモートメソッド呼び出し(RMI)、 Java ネーミングおよびディレクトリ インターフェース (JNDI) など。
- JREにはJVMがあり、 Java HotSpot 仮想マシン クライアント。
JVMの特徴
JVM の重要な機能は次のとおりです。
- これにより、クラウド環境またはデバイスでアプリケーションを実行できるようになります。
- Java 仮想マシンはバイトコードをマシン固有のコードに変換します。
- メモリ管理、セキュリティ、ガベージ コレクションなどの基本的な Java 機能を提供します。
- JVMは、ライブラリとファイルを使用してプログラムを実行します。 Java ランタイム環境。
- JDKとJREはどちらも Java 仮想マシン。
- Java プログラムを XNUMX 行ずつ実行できるため、インタプリタとも呼ばれます。
- JVM は簡単にカスタマイズできます。たとえば、最小および最大のメモリを JVM に割り当てることができます。
- ハードウェアやオペレーティング システムから独立しているため、Java プログラムを一度記述すればどこでも実行できます。
JDK はどのように機能するのか?
JDK の重要なコンポーネントは次のとおりです。
- JDKとJRE: JDKにより、プログラマーはコアとなる Java JRE で実行できるプログラム (JVM およびクラス ライブラリを含む)。
- クラスライブラリ: これは動的にロード可能なライブラリのグループであり、 Java プログラムは実行時に呼び出すことができます。
- コンパイラ: それは、 Java 開発者のテキストファイルを受け取り、コンパイルするプログラム Java クラスファイル。これはコンパイラによって出力される一般的な形式で、 Java バイトコード。 Java、主なコンパイラは Javac.
- デバッガー: デバッガは Java 開発者がテストとデバッグを行えるプログラム Java プログラム。
- Java文書: JavaDocは、Sun Microsystemsが作成したドキュメントです。 Java. JavaDocはソースプログラムからHTMLファイルでAPIドキュメントを生成するために使用できます。
JRE はどのように機能するのか?
JREにはJVMのインスタンス、ライブラリクラス、開発ツールが含まれています。 Java コードを実行すると、コンパイラはバイトコードを持つクラス ファイルを生成します。
JRE の重要なコンポーネントは次のとおりです。
- クラスローダー: クラスローダーは、アプリケーションを実行するために必要なさまざまなクラスをロードします。 Java プログラム。JVM は、ブートストラップ クラス ローダー、拡張クラス ローダー、システム クラス ローダーと呼ばれる 3 つのクラス ローダーを使用します。
- バイトコードベリファイア: バイト コード ベリファイアは、コードがインタプリタに影響を与えないようにバイトコードを検証します。
- 通訳: クラスがロードされ、コードが検証されると、インタプリタはコードを XNUMX 行ずつ読み取ります。
- ランタイム: ランタイムは、特定のプログラムが実行されている時間を記述するために主にプログラミングで使用されるシステムです。
- ハードウェア: コンパイルしたら Java ネイティブ コードであるため、特定のハードウェア プラットフォーム上で実行されます。
このように、 Java プログラムは JRE で実行されます。
JVM はどのように機能するのか?
JVM の重要なコンポーネントは次のとおりです。
1) クラスローダー
クラス ローダーは、クラス ファイルをロードするために使用されるサブシステムです。ロード、リンク、初期化という 3 つの主要な機能を実行します。
2) メソッドエリア
JVMメソッドエリアは、メタデータのようなクラスの構造、 Java メソッド、および定数ランタイム プール。
3) ヒープ
すべてのオブジェクト、配列、インスタンス変数はヒープに保存されます。 このメモリは複数のスレッド間で共有されます。
4) JVM 言語スタック
Java 言語スタックには、ローカル変数とその部分的な結果が格納されます。各スレッドには独自の JVM 言語スタックがあり、スレッドの作成と同時に作成されます。メソッドが呼び出されると新しいフレームが作成され、メソッド呼び出しプロセスが完了すると削除されます。
5) PCレジスタ
PCレジスタは、 Java 現在実行中の仮想マシン命令。 Java各スレッドには個別の PC レジスタがあります。
6) ネイティブメソッドスタック
ネイティブ メソッド スタックは、ネイティブ ライブラリに依存するネイティブ コードの命令を保持します。 ネイティブ ヒープにメモリを割り当てるか、任意のタイプのスタックを使用します。
7) 実行エンジン
これは、ソフトウェア、ハードウェア、またはシステム全体をテストするために使用されるソフトウェアの一種です。 テスト実行エンジンは、テストされた製品に関する情報を一切伝えません。
8) ネイティブメソッドインターフェース
ネイティブメソッドインターフェースはプログラミングフレームワークです。 Java ライブラリやネイティブ アプリケーションから呼び出すために JVM で実行されるコード。
9) ネイティブメソッドライブラリ
ネイティブライブラリは、ネイティブライブラリ(C、 C++) は、実行エンジンで必要になります。
JDK、JRE、JVMの違い
JDK、JRE、JVM の主な違いは次のとおりです。
JDK | JRE | JVM |
---|---|---|
JDKの完全な形式は Java 開発キット。 | JREの完全な形式は Java ランタイム環境。 | JVMの完全な形式は Java 仮想マシン。 |
JDKは、アプリケーションを開発するためのソフトウェア開発キットです。 Java. | これは、 Java 実行に必要なコンポーネントを含むクラスライブラリ Java コード。 | JVMが実行する Java バイトコードを作成し、それを実行するための環境を提供します。 |
JDK はプラットフォームに依存します。 | JRE もプラットフォームに依存します。 | JVM はプラットフォームに依存しません。 |
Java コードの開発、デバッグ、監視のためのツールが含まれています。 | これには、JVM がプログラムを実行するために必要なクラス ライブラリとその他のサポート ファイルが含まれています。 | ソフトウェア開発ツールは JVM には含まれていません。 |
JREのスーパーセットです | JDK のサブセットです。 | JVM は JRE のサブセットです。 |
JDKを使用すると、開発者は Java JRE および JVM によって実行および実行できるプログラム。 | JREは、 Java JVM を作成します。 | それは、 Java ソースコードを実行するプラットフォーム コンポーネント。 |
JDK にはインストーラーが付属しています。 | JREにはソースコードを実行するための環境のみが含まれています。 | JVM はソフトウェア JDK と JRE の両方にバンドルされています。 |