JDKとJREの違いは何ですか?
彼らの役割は何ですか?いつどちらを使用すればよいですか?
JDKとJREの違いは何ですか?
彼らの役割は何ですか?いつどちらを使用すればよいですか?
回答:
JREがあるのJava Runtime Environment。これは、Java仮想マシン(JVM)、Javaクラスライブラリ、java
コマンド、およびその他のインフラストラクチャを含む、コンパイル済みJavaプログラムを実行するために必要なすべてのパッケージです。ただし、新しいプログラムの作成には使用できません。
JDKはあるのJava Development Kit、Java用のフル機能のSDK。これには、JREのすべてが含まれていますが、コンパイラ(javac
)およびツール(javadoc
およびのようなjdb
)も含まれています。プログラムの作成とコンパイルが可能です。
通常、コンピュータでJavaプログラムを実行することだけに関心がある場合は、JREのみをインストールします。必要なのはそれだけです。一方、Javaプログラミングを計画している場合は、代わりにJDKをインストールする必要があります。
コンピューターでJava開発を行う予定がない場合でも、JDKをインストールする必要がある場合があります。たとえば、JSPを使用してWebアプリケーションを配備する場合、技術的にはアプリケーションサーバー内でJavaプログラムを実行しているだけです。では、なぜJDKが必要なのでしょうか。アプリケーションサーバーはJSPをJavaサーブレットに変換し、JDKを使用してサーブレットをコンパイルする必要があるためです。もっと例があると思います。
上記の答え(Pabloによる)は非常に正しいです。これは単なる追加情報です。
JREは、名前が暗示するように、ある環境を。これは基本的に、Java関連のファイルを含む一連のディレクトリです。
bin/
Javaの実行可能プログラムが含まれています。最も重要なのはjava
(そしてWindowsの場合javaw
も)、JVMを起動することです。いくつかの他のユーティリティは、次のような、ここにもありますkeytool
し、policytool
。conf/
Javaエキスパートが操作できるユーザー編集可能な構成ファイルを保持します。lib/
いくつか.jar
の、設定ファイル、プロパティファイル、フォント、翻訳、証明書など、Javaのすべての「トリミング」をサポートする多数のファイルがあります。最も重要なのはmodules
、.class
Java標準ライブラリのファイルを含むファイルです。.dll
(Windows)または.dylib
(macOS)または.so
(Linux)ファイルが含まれています。bin/
lib/
JDKはまた、ディレクトリのセットです。これはJREのスーパーセットであり、いくつか追加されています。
bin/
開発ツールで拡大されました。それらの中で最も重要なのはjavac
; 他の人が含まれjar
、javadoc
そしてjshell
。jmods/
標準ライブラリのJMODファイルを保持するが追加されました。これらのファイルにより、標準ライブラリをで使用できますjlink
。JDKはJREのスーパーセットであり、JREにあるすべてのものに加えて、アプレットやアプリケーションの開発に必要なコンパイラやデバッガなどのツールが含まれています。JREは、Javaプログラミング言語で記述されたアプレットおよびアプリケーションを実行するためのライブラリ、Java仮想マシン(JVM)、およびその他のコンポーネントを提供します。
簡単に言えば、JDKは祖父ですJREは父親であり、JVMは彼らの息子です。 [JDK> JRE> JVM]
JDK = JRE +開発/デバッグツール
JRE = JVM + Javaパッケージクラス(util、math、lang、awt、swingなど)+ランタイムライブラリ。
JVM =クラスローダーシステム+ランタイムデータ領域+実行エンジン。
つまり、Javaプログラマーの場合、システムにJDKが必要であり、このパッケージにはJREとJVMも含まれますが、オンラインゲームをプレイしたい通常のユーザーであれば、JREのみが必要で、このパッケージには含まれません。その中のJDK。
JVM:
Java仮想マシン(JVM)は、 Javaバイトコードを実行する仮想マシンです。JVMはJavaソースコードを理解しません。そのため、*。javaファイルをコンパイルして、JVMが理解できるバイトコードを含む* .classファイルを取得します。また、Javaを「移植可能な言語」にするためのエンティティでもあります(1回の書き込みでどこでも実行できます)。実際、さまざまなシステム(Windows、Linux、MacOS、ウィキペディアのリストを参照してください)用に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だけではないことに注意してください。
公式Javaウェブサイトから...
JRE(Javaランタイム環境):
JDK(Java開発キット)
デバッグの観点からの1つの違い:
StringやArrayListなどのJavaシステムクラスにデバッグするには、「デバッグ情報」でコンパイルされたJREの特別なバージョンが必要です。JDKに含まれているJREはこの情報を提供しますが、通常のJREは提供しません。通常のJREには、パフォーマンスを向上させるためにこの情報は含まれていません。
デバッグ情報とは何ですか?このブログ投稿からの簡単な説明は次のとおりです。
最新のコンパイラーは、高レベルのコードをうまくインデントして入れ子にした制御構造と任意に型付けされた変数をマシンコード(Javaの場合はバイトコード)と呼ばれる大きなビットの山に変換しますが、その唯一の目的はターゲットCPU(JVMの仮想CPU)で可能な限り高速に実行する。Javaコードは、いくつかのマシンコード命令に変換されます。変数は、スタック、レジスター、または完全に最適化された場所全体に押し出されます。構造体とオブジェクトは、結果のコードには存在しません。これらは、ハードコードされたオフセットからメモリバッファーに変換される単なる抽象化です。
では、デバッガーは、関数の入り口でブレークするように要求したときに、どこで停止するかをどのようにして知るのでしょうか。変数の値を要求するときに、何を表示するかをどのようにして見つけますか?答えは–デバッグ情報です。
デバッグ情報は、マシンコードとともにコンパイラによって生成されます。これは、実行可能プログラムと元のソースコードとの関係を表しています。この情報は、事前定義された形式にエンコードされ、マシンコードと一緒に保存されます。そのようなフォーマットの多くは、さまざまなプラットフォームと実行可能ファイルのために長年にわたって発明されました。
JVM、JRE、JDK-これらはすべてJava言語のバックボーンです。各コンポーネントは個別に動作します。JDKとJREは物理的に存在しますが、JVMは抽象的なマシンであるため、物理的に存在しません。
JVMは、「バイトコード」と呼ばれる中間コードをチェックするために使用されるJDKおよびJREのサブシステムです。まず、Javaコンパイラー(javac)によって生成された「クラスファイル」(拡張子は.c)を、JVMサブシステムクラスローダーと分類されたメモリーの場所(クラス領域、スタック、ヒープ、PCレジスター)を介してロードします。次に、すべてのバイトコードをチェックして、Javaで返されることと、ネットワークによるすべてのメモリアクセスがアクセスできることを確認します。その後、インタプリタの作業が始まり、プログラム全体が1行ずつチェックされます。結果は、ランタイム機能を備えたJRE(Javaランタイム環境)を介して、最終的にコンソール/ブラウザー/アプリケーションに表示されます。
JREは、JVM、クラス、.jarファイルなどの実行可能ファイルなどのランタイム機能を提供するJDKのサブシステムでもあります。
JDKはJava Development Kitの略です。クラス、メソッド、swing、AWT、パッケージ、Java(インタープリター)、javac(コンパイラー)、appletviewer(アプレットアプリケーションビューアー)など、Javaプログラミングで必要なすべてのコンポーネントが含まれています。結論として、開発に必要なすべてのファイルが含まれていますスタンドアロンまたはWebベースのアプリケーション。
JRE
JREは、Javaランタイム環境の頭字語です。ランタイム環境を提供するために使用されます。JREは、JVMの実装です。物理的に存在します。ライブラリのセットと、JVMが実行時に使用するその他のファイルが含まれます。
JDK
JDKはJava Development Kitの頭字語で、物理的に存在します。JRE+開発ツールが含まれています。
リンク:-http: //www.javatpoint.com/difference-between-jdk-jre-and-jvm
通常、ブラウザーまたはコンピューターでJavaプログラムを実行することだけに関心がある場合は、JREのみをインストールします。必要なのはそれだけです。一方、Javaプログラミングを計画している場合は、JDKも必要です。
これは、Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/からの直接の簡単な応答です。
Java SEランタイム環境(JRE)
JREは、Javaプログラミング言語で記述されたアプレットおよびアプリケーションを実行するために必要なライブラリ、Java仮想マシン、およびその他のコンポーネントを提供します。このランタイム環境は、アプリケーションと一緒に再配布して、自立させることができます。
Java SE開発キット(JDK)
JDKには、JREに加えて、アプレットやアプリケーションの開発に必要または有用なコンパイラやデバッガなどのコマンドライン開発ツールが含まれています。
Javaプログラムを実行したいが開発はしたくない場合は、Javaランタイム環境(JRE)をダウンロードしてください。それらを開発したい場合は、Java開発キットまたはJDKをダウンロードしてください。
JDKをキットと呼びましょう。これには、Javaアプリケーションの開発と実行に必要なものが含まれています。
JDKは、アプリケーション、コンポーネント、アプレットを構築するための開発環境として提供されます。
コンパイルされた形式でJavaアプリケーションを実行するために必要なすべてが含まれています。ライブラリやその他のものは必要ありません。必要なものはすべてコンパイルされています。
JREは開発には使用できず、アプリケーションの実行にのみ使用されます。
あなたがいる場合はJavaプログラマあなたが必要となるJDKをお使いのシステムにして、このパッケージは、同様にJREおよびJVMが含まれますが、あなたがしている場合は、通常のユーザーはオンラインゲームをプレイしたい、あなただけが必要になりますJREをして、このパッケージには、それにJDKを持っていません。 。
JVM
JVM(Java Virtual Machine)は抽象的なマシンです。Javaバイトコードを実行できるランタイム環境を提供する仕様です。
JVMは、多くのハードウェアおよびソフトウェアプラットフォームで使用できます。各OSの構成が異なるため、JVM、JRE、およびJDKはプラットフォームに依存します。ただし、Javaはプラットフォームに依存しません。
JRE
コンパイルされた形式でJavaアプリケーションを実行するために必要なすべてが含まれています。ライブラリやその他のものは必要ありません。必要なものはすべてコンパイルされています。
JREは開発には使用できず、アプリケーションの実行にのみ使用されます。
Java SE開発キット(JDK)
JDKには、JREに加えて、アプレットやアプリケーションの開発に必要または有用なコンパイラやデバッガなどのコマンドライン開発ツールが含まれています。
これらの用語(JVM、JDK、JRE)を明確に理解することは、それらの使用法と違いを理解するために不可欠です。
JVM Java仮想マシン(JVM)は、Javaバイトコードを実行するランタイムシステムです。JVMは、一連のコンパイルされた命令を実行し、メモリ位置を操作できる仮想コンピュータのようなものです。Javaコンパイラがソースコードをコンパイルすると、バイトコードと呼ばれる高度に最適化された命令セットが.classファイルに生成されます。JVMはこれらのバイトコード命令を解釈し、実行のためにマシン固有のコードに変換します。
JDK Java開発キット(JDK)は、Javaアプリケーションの開発と実行に使用できるソフトウェア開発環境です。JREと、Javaコンパイラ、インタープリタ、アプレットビューア、ドキュメントビューアなどのプログラミングツールセットが含まれています。JDKは、Java SE、Java EE、またはJava MEプラットフォームを介して実装されます。
JRE Javaランタイム環境(JRE)は、JVM、コアクラス、およびアプリケーション開発をサポートするいくつかのライブラリを含むJDKの一部です。JREはJDKの一部として入手できますが、個別にダウンロードして使用することもできます。
完全な理解のために私のブログを見ることができます:Jdk Jre Jvmと違い
jdkは、コードにコンパイルしてJavaコードをバイトコードに変換するために必要ですが、jreはバイトコードを実行するために必要です。