JDKとJREとJVM:主な違い
とはJDK?
JDKは、アプレットやJavaアプリケーションの作成に使用されるソフトウェア開発環境です。 JDKの完全な形式はJavaDevelopmentKitです。 Java開発者は、Windows、macOS、Solaris、およびLinuxで使用できます。 JDKは、Javaプログラムのコーディングと実行を支援します。同じコンピュータに複数のJDKバージョンをインストールすることができます。
このチュートリアルでは、次のことを学習します。
- JDKとは何ですか?
- JREとは何ですか?
- JVMとは何ですか?
- なぜJDKを使用するのですか?
- なぜJREを使用するのですか?
- なぜJVMなのか?
- JDKの機能
- JREの機能
- JVMの機能
- JDKの機能は?
- JREはどのように機能しますか?
- JVMはどのように機能しますか?
- JDK、JRE、JVMの違い
JREとは
JREは、他のソフトウェアを実行するように設計されたソフトウェアです。 。これには、クラスライブラリ、ローダークラス、およびJVMが含まれています。簡単に言うと、Javaプログラムを実行する場合は、JREが必要です。プログラマーでない場合は、JDKをインストールする必要はありませんが、Javaプログラムを実行するにはJREだけをインストールします。ただし、すべてのJDKバージョンはJavaランタイム環境にバンドルされているため、JREを個別にダウンロードしてインストールする必要はありません。 PC。JREの完全な形式はJavaランタイム環境です。
JVMとは何ですか?
JVMは提供するエンジンです。 Javaコードまたはアプリケーションを駆動するランタイム環境。Javaバイトコードをマシン言語に変換します。JVMはJavaRun Environment(JRE)の一部です。個別にダウンロードしてインストールすることはできません。JVMをインストールするには、JREをインストールする必要があります。 JVMの完全な形式はJava仮想マシンです。
他の多くのプログラミング言語では、コンパイラは特定のシステムのマシンコードを生成します。ただし、JavaコンパイラはJVMと呼ばれる仮想マシンのコードを生成します。
主な違い
- JDKはソフトウェア開発キットですが、JREはJavaプログラムの実行を可能にするソフトウェアバンドルです。一方、JVMはバイトコードを実行するための環境です。
- JDKの完全な形式はJavaDevelopment Kitであり、JREの完全な形式はJava Runtime Environmentであり、JVMの完全な形式はJava仮想マシンです。
- JDKはプラットフォームに依存し、JREもプラットフォームに依存しますが、JVMはプラットフォームに依存しません。
- JDKには開発、デバッグなどのツールが含まれます。JREにはクラスライブラリやその他のサポートファイルが含まれますが、ソフトウェアは開発ツールはJVMに含まれていません。
- JDKにはインストーラーが付属していますが、JREにはソースコードを実行するための環境しか含まれていませんが、JVMはソフトウェアJDKとJREの両方にバンドルされています。
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には、Javaソースコードを低レベルの機械語に変換するJIT(Just-in-Time)コンパイラが付属しています。したがって、通常のアプリケーションよりも高速に実行されます。
JDKの機能
JDKの重要な機能は次のとおりです。
- 1つのcatchブロックで複数の拡張機能を処理できます。
- JDKには、JREのすべての機能が含まれています。
- コンパイラ、デバッガなどの開発ツールが含まれています。
- JDKは、Javaソースコードを開発および実行するための環境を提供します。
- Windows、Unix、およびMacオペレーティングシステムにインストールできます。
- 正確なインターフェイスを記述する代わりに、ダイヤモンド演算子を使用して汎用タイプのインターフェイスを指定できます。
JREの機能
JREの重要な機能は次のとおりです。
- Javaランタイム環境は、JVMが実際に実行されるツールのセットです。
- JREには、Java WebStartやJavaPlug-inなどのデプロイメントテクノロジが含まれています。
- 開発者はJREでソースコードを簡単に実行できますが、Javaプログラムを記述してコンパイルすることはできません。
- Java Database Connectivity(JDBC)、RemoteMethodなどの統合ライブラリが含まれています。呼び出し(RMI)、Java Naming and Directory Interface(JNDI)など。
- JREにはJVMとJavaHotSpot仮想マシンクライアントがあります。
JVMの機能
JVMの重要な機能は次のとおりです。
- クラウド環境でアプリケーションを実行したり、
- Java仮想マシンは、バイトコードをマシン固有のコードに変換します。
- メモリ管理、セキュリティ、ガベージコレクションなどの基本的なJava機能を提供します。
- JVMは、Javaランタイム環境によって提供されるライブラリとファイルを使用してプログラムを実行します。
- JDKとJREの両方にJava仮想マシンが含まれています。
- Javaプログラムを1行ずつ実行できるため、インタプリタとも呼ばれます。
- JVMは、たとえば、簡単にカスタマイズできます。最小メモリと最大メモリを割り当てることができます。
- ハードウェアやオペレーティングシステムから独立しています。したがって、Javaプログラムを一度作成すれば、どこでも実行できます。
JDKの機能は?
JDKの重要なコンポーネントは次のとおりです。
- JDKとJRE:JDKを使用すると、プログラマは、で実行できるコアJavaプログラムを作成できます。 JVMとクラスライブラリを含むJRE。
- クラスライブラリ:Javaプログラムが実行時に呼び出すことができる動的にロード可能なライブラリのグループです。
- コンパイラ:開発者のテキストファイルを受け入れてコンパイルするJavaプログラムです。 Javaクラスファイル。これは、Javaバイトコードを含むコンパイラによって提供される出力の一般的な形式です。 Javaでは、主要なコンパイラはJavacです。
- デバッガ:デバッガは、開発者がJavaプログラムをテストおよびデバッグできるようにするJavaプログラムです。
- JavaDoc:JavaDocは、SunMicrosystemsがJava用に作成したドキュメントです。 JavaDocを使用して、ソースプログラムからHTMLファイルでAPIドキュメントを生成できます。
JREの機能は?
JREには、JVMのインスタンス、ライブラリクラス、および開発ツールがあります。 Javaコードを記述してコンパイルすると、コンパイラはバイトコードを含むクラスファイルを生成します。
JREの重要なコンポーネントは次のとおりです。
- クラスローダー:クラスローダーは、Javaプログラムの実行に必要なさまざまなクラスをロードします。 JVMは、ブートストラップクラスローダー、拡張クラスローダー、およびシステムクラスローダーと呼ばれる3つのクラスローダーを使用します。
- バイトコードベリファイア:バイトコードベリファイアは、コードがインタプリタを妨害しないようにバイトコードを検証します。
- インタープリター:クラスがロードされ、コードが検証されると、インタープリターはコードを1行ずつ読み取ります。
- ランタイム:ランタイムは、主に次のプログラミングで使用されるシステムです。特定のプログラムが実行されている期間を記述します。
- ハードウェア:Javaネイティブコードをコンパイルすると、特定のハードウェアプラットフォームで実行されます。
このように、 JavaプログラムはJREで実行されます。
JVMの機能は?
JVMの重要なコンポーネントは次のとおりです。
1)クラスローダー
クラスローダーは、次の目的で使用されるサブシステムです。クラスファイルのロード。それは3つの主要な機能を実行します。ロード、リンク、および初期化。
2)メソッド領域
JVMメソッド領域には、メタデータ、Javaメソッドのコード、定数ランタイムプールなどのクラスの構造が格納されます。
3)ヒープ
すべてのオブジェクト、配列、およびインスタンス変数はヒープに格納されます。このメモリは複数のスレッドで共有されます。
4)JVM言語スタック
Java言語スタックは、ローカル変数とその部分的な結果を格納します。すべてのスレッドには独自のJVM言語スタックがあり、スレッドの作成と同時に作成されます。メソッドが呼び出されると新しいフレームが作成され、メソッドの呼び出しプロセスが完了するとフレームが削除されます。
5)PCレジスタ
PCレジスタは、現在実行中のJava仮想マシン命令のアドレスを格納します。 Javaでは、各スレッドに個別のPCレジスタがあります。
6)ネイティブメソッドスタック
ネイティブメソッドスタックは、ネイティブライブラリに応じてネイティブコードの命令を保持します。ネイティブヒープにメモリを割り当てるか、任意のタイプのスタックを使用します。
7)実行エンジン
これは、ソフトウェア、ハードウェア、または完全なシステムをテストするために使用されるソフトウェアの一種です。テスト実行エンジンは、テストされた製品に関する情報を伝達することはありません。
8)ネイティブメソッドインターフェイス
ネイティブメソッドインターフェイスはプログラミングフレームワークです。これにより、JVMで実行されているJavaコードがライブラリやネイティブアプリケーションから呼び出すことができます。
9)ネイティブメソッドライブラリ
ネイティブライブラリは、実行エンジンに必要なネイティブライブラリ(C、C ++)のコレクションです。
JDK、JRE、JVMの違い
JDKとJREとJVMの主な違いは次のとおりです。
JDK | JRE | JVM |
JDKの完全な形式はJavaDevelopmentKitです。 | JREの完全な形式はJavaランタイム環境です。 | JVMの完全な形式はJava仮想マシンです。 |
JDKは、Javaでアプリケーションを開発するためのソフトウェア開発キットです。 | これは、Javaコードを実行するために必要なコンポーネントをJavaクラスライブラリに提供するソフトウェアバンドルです。 | JVMはJavaバイトコードを実行し、それを実行するための環境を提供します。 |
JDKはプラットフォームに依存します。 | JREもプラットフォームに依存します。 | JVMはプラットフォームに依存しません。 |
Javaコードを開発、デバッグ、および監視するためのツールが含まれています。 | これには、JVMがプログラムを実行するために必要なクラスライブラリとその他のサポートファイルが含まれています。 | ソフトウェア開発ツールはJVMに含まれていません。 |
JREのスーパーセットです | JDKのサブセットです。 | JVMはJREのサブセットです。 |
JDKを使用すると、開発者はJREおよびJVMで実行および実行できるJavaプログラムを作成できます。 | JREは、JVMを作成するJavaの一部です。 | ソースコードを実行するのはJavaプラットフォームコンポーネントです。 |
JDKにはインストーラーが付属しています。 | JREには、ソースコードを実行するための環境のみが含まれています。 | JVMはソフトウェアJDKとJREの両方にバンドルされています。 |