JDK 、JRE、JVMは、詳細な
含まれる用語との関係から、 JDK> JRE> JVM。
概念的にはJDKはJava開発ツールである、JAVAのプログラムを開発するためにそれを使用。
JAVA JREは、ランタイム環境である限り、プログラムとして実行することができますJAVA JREで開発されました、。
JVMは、Java仮想マシンがある Javaクラスの操作は、基本的にはJVM上で実行されているため、JREの一部です。
JDK
JDK(Javaの開発キット)は、Javaランタイム環境(JavaランタイムEnvirnment、Javaツール(javacの/ javaの/ JDBなど)およびJavaベースのライブラリ(rt.jarに含まれているJavaのAPI)の束を含むJAVAのコアです。
JDKはJavaプログラムを開発するために使用されるJAVA開発キット、である、プログラマは、Java言語のJava開発キットは、プログラマに提供されています使用する必要があります。
JDKのディレクトリ:
ビン:最も重要なのは、コンパイラ(のjavac.exe)であります
含まれます:JVMと対話するためのヘッダファイルとJavaは、
LIB:ライブラリJRE:Javaランタイム環境
(注:ビンで、ここではビンlibとJREフォルダは、LIBは異なります)
JRE
JRE(Javaランタイム環境、Javaランタイム環境)は、JVMおよびJavaベースの標準の実装クラスライブラリを含む、JAVA環境を実行しなければならないプログラムのコレクションです。
JAVA JREは限りプログラムは、ソフトウェア環境の実行に必要なJava言語プログラムの使用があるとして実行することができます開発されたJavaランタイム環境は、Javaプログラムのユーザーを実行することが可能です。
JREの状態は、PCのように、私たちは、Javaプログラムも実行するために私たちのJREで記述する必要があり、Win64のアプリケーションは、私たちは同じ実行を支援するために、オペレーティングシステムを必要と書きます。
全体的にJDKのJavaプログラムを開発するために使用されますが、.classファイルや機能をコンパイルされていないだけで、JREを実行することができます。
JVM
JVM(Java仮想マシン)、それが全体のJavaのクロスプラットフォームの中核部分であるJava仮想マシン、Java実行環境であり、すべてのJavaプログラムが最初に.classクラスにコンパイルされたファイルは、このファイルタイプすることができます仮想マシン上で実行されます。
グラフィック:
Java 言語は、クロスプラットフォームの特長
私はJavaのビルド・プロセスについてお話しましょう:
最初のJavaコンパイラ:Javaソースコードは、バイナリの.classバイトコードファイルにjavacコンパイラを通過します
第二のJavaコンパイル:の.classファイルをして、JVM上で動作する、Javaインタプリタ(JVMの一部)は、実行プラットフォームに対応したマシンコードに解釈されます。
いわゆるクロスプラットフォームのJavaは、異なるプラットフォームの.classバイトコードファイルに生成され、異なるプラットフォームにインストールされて別のJVMで同じ(クロスプラットフォームのJavaはクロス指の.classバイトコードファイルでされていますプラットフォームは、.classファイルのバイトコードはプラットフォームに依存しない)で、Java仮想マシンのバイトコードは、実行されると、特定のプラットフォーム上で実行されたマシン命令にバイトコードインタプリタ。これは「一度コンパイルどこでも実行」の理由をするためのJavaの能力です。
のみJavaプログラムが複数のプラットフォーム上で変更せずに実行することができるJava仮想マシンで実行中のオブジェクトコード(バイトコード)を生成するように、JVMは、特定のオペレーティング・システム・プラットフォームに関連する情報をマスク。
グラフィック:
バイトコード
OPコード/バイナリ組成のデータのシーケンスが実行するプログラムを含むバイトコード(バイトコード)。バイトコードは、インタプリタが中間コードを機械コードに翻訳する必要があるマシンコードより抽象的である中間状態(中間コード)バイナリコード(ファイル)です。
マシンコード
マシンコード(マシンコード)、機械語命令の学名、時にはネイティブコード(ネイティブコード)と呼ばれる、コンピュータのCPUが直接データを解釈することができ、最速。
1.JDK、JRE、JVM 3つの接触:
JVM不能单独搞定class的执行,解释.class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。
总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成.class字节码,在JRE上运行这些字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。
2.JDK、JRE、JVM三者区别:
a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。
参考链接:
https://www.cnblogs.com/xiaocao123/p/10534710.html
https://blog.csdn.net/ancientear/article/details/79483592
https://bbs.csdn.net/topics/190099909
https://www.cnblogs.com/zhangzongxing01/p/5559126.html
https://www.cnblogs.com/qiumingcheng/p/5400265.html