回答:
Java仮想マシン(JVM)は、Javaバイトコードを実行する仮想マシンです。JVMはJavaソースコードを理解しません。その*.java
ため*.class
、JVMが理解するバイトコードを含むファイルを取得するためにファイルをコンパイルする必要があります。これは、Javaを「移植可能な言語」にするためのエンティティでもあります(1回の書き込みでどこでも実行できます)。実際、さまざまなシステム(Windows、Linux、macOS、Wikipediaのリストを参照)用にJVMの特定の実装があり、同じバイトコードで同じ結果が得られることが目的です。
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は、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-以降
JVMはJava仮想マシンであり、実際にはJava ByteCodeを実行します。
JREはJavaランタイム環境です。JREが含まれ、Javaプログラムを実行するために必要です。
JDKはJava開発キットです。これはJREですが、javac(Javaソースコードのコンパイルに必要なもの)とその他のプログラミングツールが追加されています。
OpenJDKは特定のJDK実装です。
other things
JVMに含まれていることについて言及しなかったためと考えられます。彼らは何ですか ?この記事はその質問に完全に答えていますか-javabeat.net/what-is-the-difference-between-jrejvm-and-jdk
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仕様では異なります。これを行うための特定の方法を定義します。
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)に基づいてライセンスされます。
JDK(Java開発キット):
JRE(Javaランタイム環境)
Javaランタイム環境には、JVM、クラスライブラリ、およびその他のサポートファイルが含まれています。JREは、Javaファイルの実行を対象としています。
JVM(Java仮想マシン)
JVM は、基礎となるオペレーティングシステムとハードウェアの組み合わせに応じて、バイトコードをマシンコードに解釈します。ガベージコレクション、配列の境界チェックなどのすべてのことを担当します。Java仮想マシンは、プラットフォームに依存しない方法でコードを実行します。
言及する価値のある別の側面:
JDK(Java開発キット)
名前が示すように、開発目的で必要になります。
たとえば、ソフトウェア会社は、Javaプログラムのコンパイルと実行を含む新しいソフトウェアを開発する必要があるため、コンピュータにJDKをインストールします。
つまり、JDK = JRE + JVMと言えます。
JRE(Javaランタイム環境)
Javaプログラムを実行するために必要です。それを使ってJavaプログラムをコンパイルすることはできません。
たとえば、一部のオンラインゲームを実行したい通常のコンピューターユーザーがJavaプログラムを実行するには、システムにJREが必要です。
JVM(Java仮想マシン)
ご存知かもしれませんが、バイトコードを実行します。実行するため、Javaプラットフォームに依存しません。.class
Windows、Mac、またはLinuxでコンパイルするかどうかに関係なく、Javaプログラムのコンパイル後に取得しファイルをません。
JDKを開く
さて、上記のように。現在、JDKは別の会社によって作成されています。たまたまオープンソースであり、公に自由に使用できるのはOpenJDKですが、Oracle CorporationのJRockit JDKまたはIBM JDKもあります。
ただし、一般ユーザーにはすべて同じように見える場合があります。
結論
Javaプログラマーの場合、システムにJDKが必要で、このパッケージにはJREとJVMも含まれますが、オンラインゲームをプレイするのが好きな通常のユーザーの場合、JREのみが必要で、このパッケージにはJDKが含まれません。 。
つまり、JDKは祖父であり、JREは父であり、JVMは彼らの息子です。
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が含まれています。
JVM: Javaプログラムを実行する方法/リソースを記述する仕様。実際にバイトコードを実行し、Javaプラットフォームを独立させます。そうすることで、プラットフォームごとに異なります。Windows用のJVMはUNIX用のJVMとして機能できません。
JRE: JVMの実装。(JVM +ランタイムライブラリ)
JDK: JRE + Javaコンパイラ、およびJavaプログラムをゼロから構築するためのその他の必須ツール
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
要約すれば:
Javaで開発する場合はJDKが必要ですが、Javaを実行するだけの場合はJREが必要です。
JVM Java Virtual Machineは、実際にはJavaバイトコードを実行します。これは、JAVAプラットフォームの実行ブロックです。バイトコードをマシンコードに変換します。
JRE Javaランタイム環境。Javaアプリケーションを実行するための最小要件を提供します。Java仮想マシン(JVM)、コアクラス、およびサポートファイルで構成されています。
JDK Java開発キット。アプリケーションソフトウェアを開発するためのすべてのツールが含まれています。JRE + JVMとして
Open JDK は、Javaプラットフォームの無料のオープンソース実装です。
素人の言葉で:-JDK = JRE +開発/デバッグツール、ここでJDKは、コンパイルの作成から実行まで、Javaと連携するための完全なパッケージです。
注:-JDKとJREのどちらをインストールする場合でも、JVMはパッケージの両方にバンドルされており、JVMはJITコンパイラがバイトコードをマシン固有のコードに変換する部分です。
JDK、JRE、JVM、JITに関する記事を読んでください。
JVMはJava Virtual Machineと略され 、JVMはJavaアーキテクチャの主要コンポーネントです。JVMはCプログラミング言語で書かれています。JavaコンパイラはJVM用のバイトコードを生成します。JVMがバイトコードを読み取り、バイトコードを検証し、コードをライブラリにリンクします。
JREはJava Runtime Environmentと略されます。実行時に環境を提供します。それは物理的に存在しています。これには、JVM +ライブラリセット(jar)+その他のファイルが含まれています。
JDKはJava Development Kitと略され ます。それは、Javaアプリケーションの開発です。また、Javaアプリケーションのデバッグと監視。JDKにはJRE +開発ツール(javac、java)が含まれています
OpenJDK OpenJDKは、Sun JDKのオープンソースバージョンです。Oracle JDKは、Sunの公式JDKです。