360

JVMJDKJREOpenJDKの違いは何ですか?

私は Java でプログラミングをしていて、これらのフレーズに遭遇しました。それらの違いは何ですか?

4

22 に答える 22

392

JVM

Java 仮想マシン(JVM) は、Java バイトコードを実行する仮想マシンです。JVM は Java ソース コードを認識しません。そのため、ファイルをコンパイルして、JVM が認識するバイトコードを含む*.javaファイルを取得する必要があります。*.classこれは、Java を「移植可能な言語」 (一度書けばどこでも実行できる) にするためのエンティティでもあります。実際、さまざまなシステム (Windows、Linux、macOS、ウィキペディアのリストを参照) 用の JVM の特定の実装があり、同じバイトコードを使用してすべて同じ結果が得られるようにすることを目的としています。

JDK と JRE

JDK と JRE の違いを説明するには、Oracle のドキュメントを読み、図を参照するのが最善です。

Java ランタイム環境 (JRE)

Java ランタイム環境 (JRE) は、Java プログラミング言語で記述されたアプレットとアプリケーションを実行するためのライブラリ、Java 仮想マシン、およびその他のコンポーネントを提供します。さらに、2 つの主要なデプロイメント テクノロジーが JRE の一部です。Java Web Start は、ネットワーク経由でスタンドアロン アプリケーションを展開します。また、エンタープライズ ソフトウェアの開発と展開のための Java 2 Platform, Enterprise Edition (J2EE) のテクノロジの基盤でもあります。JRE には、アプレットやアプリケーションを開発するためのコンパイラやデバッガなどのツールやユーティリティは含まれていません。

Java 開発キット (JDK)

JDK は JRE のスーパーセットであり、JRE にあるすべてのものに加えて、アプレットやアプリケーションの開発に必要なコンパイラやデバッガなどのツールが含まれています。

JDK を提供しているのは Oracle だけではないことに注意してください。

OpenJDK

OpenJDKは、JDK のオープンソース実装であり、Oracle JDK のベースです。Oracle JDK と OpenJDK の間にはほとんど違いはありません。

違いはこのブログに記載されています:

Q: OpenJDK リポジトリにあるソース コードと、Oracle JDK のビルドに使用するコードの違いは何ですか?

A: 非常に近いです。Oracle JDK リリースのビルド プロセスは、OpenJDK 7 に基づいてビルドされます。これには、Oracle の Java Plugin および Java WebStart の実装と、いくつかのクローズド ソース サードを含むデプロイメント コードなどのいくつかの要素が追加されます。グラフィックス ラスタライザーなどのパーティ コンポーネント、Rhino などのオープン ソースのサード パーティ コンポーネント、および追加のドキュメントやサード パーティのフォントなど、あちこちにいくつかの小片があります。今後は、JRockit Mission Control (Oracle JDK ではまだ利用できない) などの商用機能と見なされるものを除いて、Oracle JDK のすべての部分をオープン ソース化し、障害のあるサード パーティ製コンポーネントをオープン ソースの代替品に置き換えて、より緊密な同等性を達成することを目的としています。コードベースの間。

JDK 11 の更新

Donald Smith の記事では、Oracle JDK と Oracle のOpenJDKの違いを明確にしようとしています。

@Alan Evangelista のコメントで言及されているように、Java Web Start は Java SE 9 で Oracle によって非推奨になり、Java SE 11 で削除されました。

于 2012-07-20T13:26:36.297 に答える
100

JVMはJava仮想マシンであり、実際にはJavaByteCodeを実行します。

JREはJavaランタイム環境です。JVMなどが含まれており、Javaプログラムを実行するために必要なものです。

JDKはJavaDevelopmentKitです。これはJREですが、javac(Javaソースコードをコンパイルするために必要なもの)およびその他のプログラミングツールが追加されています。

OpenJDKは特定のJDK実装です。

于 2012-07-18T17:59:03.130 に答える
49

JDK (Java 開発キット)

Java Developer Kit には、Java プログラムの開発に必要なツールと、プログラムを実行するための JRE が含まれています。ツールには、コンパイラ (javac.exe)、Java アプリケーション ランチャー (java.exe)、Appletviewer などがあります。</p>

コンパイラは Java コードをバイトコードに変換します。Java アプリケーション ランチャは JRE を開き、クラスをロードして、そのメイン メソッドを呼び出します。

独自のプログラムを作成してコンパイルするには、JDK が必要です。Java プログラムを実行するには、JRE で十分です。

JRE は Java ファイルの実行を対象としています

つまり、JRE = JVM + Java パッケージ クラス (util、math、lang、awt、swing など) + ランタイム ライブラリ。

JDK は主に Java 開発を対象としています。つまり、(Java パッケージを使用して) Java ファイルを作成し、Java ファイルをコンパイルして、Java ファイルを実行することができます。

JRE (Java ランタイム環境)

Java Runtime Environment には、JVM、クラス ライブラリ、およびその他のサポート ファイルが含まれています。コンパイラ、デバッガなどの開発ツールは含まれていません。実際に JVM はプログラムを実行し、JRE で提供されるクラス ライブラリやその他のサポート ファイルを使用します。Java プログラムを実行する場合は、システムに JRE をインストールする必要があります。

Java 仮想マシンは、プラットフォームに依存しないコード実行方法を提供します。つまり、任意のマシンで一度コンパイルして、任意の場所 (任意のマシン) で実行します。

JVM (Java 仮想マシン)

Java ファイルをコンパイルすると、出力は「exe」ではなく「.class」ファイルになります。「.class」ファイルは、JVM が理解できる Java バイト コードで構成されます。Java 仮想マシンは、基盤となるオペレーティング システムとハードウェアの組み合わせに応じて、バイト コードをマシン コードに解釈します。ガベージ コレクション、配列境界チェックなどのすべてを担当します。JVM はプラットフォームに依存します。

JVM は、基盤となるオペレーティング システムやマシン ハードウェア アーキテクチャに依存しないマシン インターフェイスを提供するため、「仮想」と呼ばれます。このようにハードウェアやオペレーティング システムから独立していることは、一度書けばどこでも実行できる Java プログラムの価値の基礎です。

そこにはさまざまなJVM実装があります。これらは、パフォーマンス、信頼性、速度などの点で異なる場合があります。これらの実装は、ガベージ コレクション プロセスの仕組みが JVM に依存し、Java 仕様が依存しないなど、Java 仕様が機能の実装方法について言及していない領域で異なります。これを行う特定の方法を定義します。

于 2013-06-14T03:42:16.707 に答える
25

Java 仮想マシン( JVM)は、Java ByteCode を実行できる仮想マシンです。これは、Java ソフトウェア プラットフォームのコード実行コンポーネントです。

Java Development Kit (JDK)は、Java 開発者向けの Oracle Corporation 製品です。Java の導入以来、Java ソフトウェア開発キット (SDK) は最も広く使用されています。

Java ランタイム環境は、Java ランタイム、ランタイム環境とも呼ばれます。

OpenJDK (Open Java Development Kit)は、Java プログラミング言語の無料のオープン ソース実装です。これは、Sun Microsystems が 2006 年に開始した取り組みの結果です。実装は、GNU General Public License (GPL) に基づいてライセンスされていますが、リンクの例外があります。

于 2012-07-18T18:02:31.000 に答える
18

JVMは、Java コードが実行される仮想マシンです。

JREは、Java アプリケーションを実行するために必要な環境 (標準ライブラリと JVM) です。

JDKは、開発者ツールとドキュメントを備えた JRE です。

OpenJDKは、Oracle が所有する一般的な JDK とは異なり、JDK のオープン ソース バージョンです。

于 2012-07-18T18:01:22.403 に答える
15

JDK (Java 開発キット) :

  • Java プログラムの開発に必要なツールが含まれています。
  • 独自のプログラムを作成してコンパイルするには、JDK が必要です。
  • JDK は主に Java 開発を対象としています。

JRE (Java ランタイム環境)

Java Runtime Environment には、JVM、クラス ライブラリ、およびその他のサポート ファイルが含まれています。JRE は、Java ファイルの実行を対象としています。

JVM (Java 仮想マシン)

JVMは、基盤となるオペレーティング システムとハードウェアの組み合わせに応じて、バイト コードをマシン コードに解釈します。Java Virtual Machine は、ガベージ コレクション、配列境界チェックなどのすべてを担当します。Java 仮想マシンは、プラットフォームに依存しないコード実行方法を提供します。

于 2013-07-14T23:27:35.397 に答える
6

JDK - Java を ByteCode にコンパイルします。デバッガ、コンパイラなどで構成されています。

javac file.java // Is executed using JDK

JVM - バイトコードを実行します。JVM は、Java プラットフォームを独立させるものです。ただし、JVM はプラットフォームによって異なります。

JRE - Java プログラムを実行するための JVM と Java ランタイム ライブラリ。

于 2015-07-31T16:54:44.947 に答える
4

JVM : Java プログラムを実行する方法/リソースを記述する仕様。実際にバイトコードを実行し、Java プラットフォームに依存しないようにします。そうすることで、プラットフォームごとに異なります。Windows 用の JVM は、UNIX 用の JVM としては機能しません。

JRE : JVM の実装。(JVM + ランタイム ライブラリ)

JDK : JRE + Java コンパイラ、および Java プログラムをゼロから構築するためのその他の必須ツール

于 2015-08-06T03:30:48.727 に答える
4

言及する価値のあるもう1つの側面:

JDK (Java 開発キット)

名前が示すように、開発目的で必要になります。

たとえば、ソフトウェア会社は、Java プログラムのコンパイルと実行を含む新しいソフトウェアを開発する必要があるため、コンピュータに JDK をインストールします。

したがって、JDK = JRE + JVM と言えます。

JRE (Java ランタイム環境)

Java プログラムを実行するために必要です。これを使用して Java プログラムをコンパイルすることはできません。

たとえば、オンライン ゲームを実行したい通常のコンピュータ ユーザーは、Java プログラムを実行するためにシステムに JRE が必要になります。

JVM (Java 仮想マシン)

ご存じかもしれませんが、バイトコードを実行します。.classWindows、Mac、Linuxのいずれでコンパイルしても、Javaプログラムをコンパイルした後に取得したファイルを実行するため、Javaプラットフォームに依存しません。

JDKを開く

さて、私が上で言ったように。現在、JDK は別の会社によって作成されています。その 1 つがたまたまオープン ソースであり、一般に無料で使用できるのは OpenJDK であり、他のいくつかは Oracle Corporation の JRockit JDK または IBM JDK です。

しかし、それらはすべて一般ユーザーには同じように見えるかもしれません。

結論

あなたが Java プログラマーであれば、システムに JDK が必要です。このパッケージには JRE と JVM も含まれますが、オンライン ゲームをするのが好きな通常のユーザーであれば、必要なのは JRE だけで、このパッケージには JDK は含まれていません。 .

つまり、JDK は祖父であり、JRE は父であり、JVM はその息子です。

于 2013-05-03T19:08:49.943 に答える
4

Java は言語であり、厳密で厳密に型指定された構文が含まれています。

J2SE とも呼ばれる Java 2 Platform, Standard Edition は、このプラットフォームを参照し、特に java.lang および java.io パッケージにクラスを含めました。これは、Java アプリケーションが構築されるビルディング ブロックでした。

Java 仮想マシン (JVM) は、コンパイルされた Java コードを実行するソフトウェア仮想マシンです。コンパイルされた Java コードは単なるバイトコードであるため、JVM はそのバイトコードを実行前にマシン コードにコンパイルする必要があります。(これは、Just In Time Compiler または JIT Compiler と呼ばれることがよくあります。) JVM はメモリ管理も処理するため、アプリケーション コードはメモリ管理を行う必要がありません。

Java 開発キット (JDK) は、Java 開発者が Java アプリケーションを作成するために使用するソフトウェアの一部であり、今もそうです。これには、Java 言語コンパイラ、ドキュメント ジェネレータ、ネイティブ コードを操作するためのツール、および (通常は) プラットフォーム クラスのデバッグを可能にするプラットフォーム用の Java ソース コードが含まれています。

Java ランタイム環境 (JRE) は、コンパイルされた Java アプリケーションを実行するためにエンド ユーザーがダウンロードするソフトウェアの一部であり、現在もそうです。これには JVM が含まれていますが、JDK にバンドルされている開発ツールは含まれていません。ただし、JDK には JRE が含まれています。

于 2014-07-16T17:07:51.827 に答える
2

JVM : これは実際にはバイト コード インタープリターを意味します。これはプラットフォームに依存します。例: Windows プラットフォームでは、' java.exe ' または ' javaw.exe ' プロセスは jvm プロセスです。

JDK : Java プログラム/アプリケーションを開発および実行するために必要なライブラリとユーティリティを含むツールキットです。

JRE : Java アプリケーションの実行環境です。つまり、コンパイルされたプログラムの jvm を含むランタイム依存関係のみをサポートします。Java プログラムをコンパイルする場合は、jdk が必要です。

于 2013-10-10T09:15:50.473 に答える
2

JVM

JVM (Java 仮想マシン) は抽象的なマシンです。Javaバイトコードを実行できる実行環境を提供する仕様です。JVM は、多くのハードウェアおよびソフトウェア プラットフォームで使用できます。

JRE

JREはJava Runtime Environmentの頭字語です.ランタイム環境を提供するために使用されます.JVMの実装です.物理的に存在します.ライブラリのセットとJVMが実行時に使用するその他のファイルが含まれています.

JDK

JDK は Java Development Kit の頭字語です。物理的に存在します。JRE + 開発ツールが含まれています。

リンク: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm

于 2015-04-21T08:12:19.730 に答える
0

簡単に言えば:- JDK = JRE + 開発/デバッグ ツール。JDK は、コンパイルの作成から実行まで、Java を操作するための完全なパッケージです。一方、JRE はコード (バイト コード) を実行するだけのものです。

注:- JDK と JRE のどちらをインストールする場合でも、JVM は両方のパッケージにバンドルされており、JVM は JIT コンパイラがバイト コードをマシン固有のコードに変換する部分です。

JDK、JRE、JVM、および JITに関する記事を読んでください。

于 2015-02-11T15:40:12.103 に答える