JVM、JDK、JRE、OpenJDKの違いは何ですか?


回答:


375

JVM

Java仮想マシン(JVM)は、Javaバイトコードを実行する仮想マシンです。JVMはJavaソースコードを理解しません。その*.javaため*.class、JVMが理解するバイトコードを含むファイルを取得するためにファイルをコンパイルする必要があります。これは、Javaを「移植可能な言語」にするためのエンティティでもあります(1回の書き込みでどこでも実行できます)。実際、さまざまなシステム(Windows、Linux、macOS、Wikipediaのリストを参照)用にJVMの特定の実装があり、同じバイトコードで同じ結果が得られることが目的です。

JDKおよびJRE

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

Javaランタイム環境(JRE)

Javaランタイム環境(JRE)は、Javaプログラミング言語で記述されたアプレットおよびアプリケーションを実行するためのライブラリ、Java仮想マシン、およびその他のコンポーネントを提供します。さらに、JREには2つの主要な配備技術が含まれています。JavaPlug-inは、アプレットを一般的なブラウザで実行できるようにします。スタンドアロンのアプリケーションをネットワーク経由でデプロイする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:非常に近いです。OracleJDKリリースのビルドプロセスは、JavaプラグインとJava WebStartのOracleの実装、およびいくつかのクローズドソースの3番目を含むデプロイメントコードなど、ほんの数個を追加することでOpenJDK 7に基づいて構築されます。グラフィックラスタライザなどのパーティコンポーネント、Rhinoなどのいくつかのオープンソースサードパーティコンポーネント、追加のドキュメントやサードパーティフォントなど、あちこちにいくつかあります。今後は、JRockit Mission Control(まだOracle JDKでは利用できません)などの商用機能を検討しているものを除き、Oracle JDKのすべての部分をオープンソース化し、障害のあるサードパーティコンポーネントをオープンソースの代替手段に置き換えて、より近いパリティを実現することを目指していますコードベース間。

JDK 11のアップデート-Donald Smithの記事は、Oracle JDKとOracleのOpenJDKの違いを明確にすることを試みています。https//blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-以降


@ alain.janinm、開発にOracleJDKまたはOpenJDKを選択しますか?
Pacerier 2014

@Pacerier私は仕事でOracleJDKを使用するのに慣れていますが、OpenJDKには何もしていません:)実際、私はそれらのどちらかを選択させる具体的な違いに遭遇したことはありません。オープンソースを好み、プロプライエタリライセンスを使用する必要がない場合は、OpenJDKを使用してください。
alain.janinm 14

1
次の点について私が正しいかどうか教えてください。基本的に、JREなしでは実際のJavaアプリケーションは実行できません。したがって、すべてのダウンロード(開発者向けのエキゾチックなものを除く)には、JVMとJRE(スーパーセットJDKでない場合)の両方が含まれていますか?
Mads Skjern、2015

8
@MadsSkjernはい、Javaアプリを実行するにはJREが必要です。ただし、Javaアプリをダウンロードする場合、JREには付属していません。コンピューターにインストールされていると想定しています。
alain.janinm 2015

92

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

JREはJavaランタイム環境です。JREが含まれ、Javaプログラムを実行するために必要です。

JDKはJava開発キットです。これはJREですが、javac(Javaソースコードのコンパイルに必要なもの)とその他のプログラミングツールが追加されています。

OpenJDKは特定のJDK実装です。


3
other thingsJVMに含まれていることについて言及しなかったためと考えられます。彼らは何ですか ?この記事はその質問に完全に答えていますか-javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
Erran Morad

OpenJDKには、JVM仕様の実装の1つであるJVMが含まれています。Oracle JDKには、JVM仕様の別の実装
AKh

46

JDK(Java開発キット)

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

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

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

JVM(Java仮想マシン)

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

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

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


23

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

Java Development Kit(JDK)は、 Java開発者に向けたオラクル社の製品です。Javaの導入以来、これは最も広く使用されているJavaソフトウェア開発キット(SDK)です。

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

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


良い答えですが、説明が1つあります。オラクルの農産物のJDKよりその他-例えばAIXのためのIBMとHP-UXのためのz / OS、HP、など。
トレントグレードナルド

16

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

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

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

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


15

JDK(Java開発キット):

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

JRE(Javaランタイム環境)

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

JVM(Java仮想マシン)

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


6

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

javac file.java // Is executed using JDK

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

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


4

言及する価値のある別の側面:

JDK(Java開発キット)

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

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

つまり、JDK = JRE + JVMと言えます。

JRE(Javaランタイム環境)

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

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

JVM(Java仮想マシン)

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

JDKを開く

さて、上記のように。現在、JDKは別の会社によって作成されています。たまたまオープンソースであり、公に自由に使用できるのはOpenJDKですが、Oracle CorporationのJRockit JDKまたはIBM JDKもあります。

ただし、一般ユーザーにはすべて同じように見える場合があります。

結論

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

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


9
あなたの投稿はいたるところ間違っています。JRE(ランタイム環境)には、JVM(仮想マシン)とJavaクラスライブラリが含まれています。JDKには、JREと開発者向けの一連のプログラミングツールが含まれています。en.wikipedia.org/wiki/JDK en.wikipedia.org/wiki/Java_virtual_machine修正したコメ​​ントに返信すると、反対票が削除されます。
nhahtdh 2013年

@nhahtdh言うことができます:jdkは独立したパッケージで、ダウンロード、個別にインストールできます。Jre =一部のクラス+ Javaプラグイン+ JVM
Prakash Pandey

3

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 Runtime Environment(JRE)は、コンパイルされたJavaアプリケーションを実行するためにエンドユーザーがダウンロードしたソフトウェアの一部であり、現在も残っています。これにはJVMが含まれていますが、JDKにバンドルされている開発ツールは含まれていません。ただし、JDKにはJREが含まれています。


3

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

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

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


2

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

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

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


2

JVM:Javaの仮想マシン。マシンにJavaコードをどうするかを指示します。JVMをそのままダウンロードすることはできません。他のコンポーネントにパッケージされています。

JRE:上記で言及した他のいくつかのコンポーネントはJREです。ランタイム環境を作成するのはJVM +他のjarです

JDK:JRE(JVMが含まれる)が含まれています。JDKを入手したら、JREとJVMを別々にインストールする必要はありません。.javaファイルを.classファイルにコンパイルするコンパイラが含まれています


2

JVM

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

JRE

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

JDK

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

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


1

要約すれば:

  • JRE = JVM + Javaパッケージ(util、math、lang、awt、swingなど)+ランタイムライブラリ
  • JDK = JRE +開発/デバッグツール

Javaで開発する場合はJDKが必要ですが、Javaを実行するだけの場合はJREが必要です。


0

JVM Java Virtual Machineは、実際にはJavaバイトコードを実行します。これは、JAVAプラットフォームの実行ブロックです。バイトコードをマシンコードに変換します。

JRE Javaランタイム環境。Javaアプリケーションを実行するための最小要件を提供します。Java仮想マシン(JVM)、コアクラス、およびサポートファイルで構成されています。

JDK Java開発キット。アプリケーションソフトウェアを開発するためのすべてのツールが含まれています。JRE + JVMとして

Open JDK は、Javaプラットフォームの無料のオープンソース実装です。


0

素人の言葉で:-JDK = JRE +開発/デバッグツール、ここでJDKは、コンパイルの作成から実行まで、Javaと連携するための完全なパッケージです。

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

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


0

JDK:Javaコードを記述して実行するために必要な完全なパッケージ

OpenJDK:JDKをより良くするための独立した実装

JVM:Javaコードをバイトコードに変換し、Javaコードをコンパイル、ロード、検証、エラーチェックおよび実行する方法を示す仕様を提供します。

JRE:一部のJavaライブラリを使用してプログラムを実行するJVMの実装


0

JREはアプリケーションを実行しますが、JVMは命令を1行ずつ読み取るため、インタプリタです。

JDK = JRE +開発ツール

JRE = JVM + Libraryクラス


0

JVMJava Virtual Machineと略され 、JVMはJavaアーキテクチャの主要コンポーネントです。JVMはCプログラミング言語で書かれています。JavaコンパイラはJVM用のバイトコードを生成します。JVMがバイトコードを読み取り、バイトコードを検証し、コードをライブラリにリンクします。

JREJava Runtime Environmentと略されます。実行時に環境を提供します。それは物理的に存在しています。これには、JVM +ライブラリセット(jar)+その他のファイルが含まれています。

JDKJava Development Kitと略され ます。それは、Javaアプリケーションの開発です。また、Javaアプリケーションのデバッグと監視。JDKにはJRE +開発ツール(javac、java)が含まれています

OpenJDK OpenJDKは、Sun JDKのオープンソースバージョンです。Oracle JDKは、Sunの公式JDKです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.