关键字:JDK,JRE,JVM 摘要:JDK是 Java 语言软件开发工具包(SDK)。在JDK有一个安装目录jre目录中有两个文件夹bin和lib,这里可以想到bin里的就是jvm,lib中则是jvm工作所需的类库,jvm和 lib合起来叫jre。
一、JDK JDK(Java Development Kit) 是整个JAVA包括核心Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基本类库(即Java API 包括rt.jar)。 JDK是java开发工具包,基本上每个学习java每个人都会先在机器里 上装一个JDK,他包含哪些部分?目录下面有 六个文件夹,一个src类库源代码压缩包等声明文件。其中,真的在运行java时起作用的 以下四个文件夹:bin、include、lib、 jre。有这样的关系,JDK包含JRE,而JRE包 含JVM。
bin:最重要的是编译器(javac.exe) include:java和JVM交互头文件 lib:类库 jre:java运行环境
(注:这里的bin、lib文件夹和jre里的bin、lib是 不同的)
总的来说JDK是用于java和jre只能运行class没有编译功能。
二、JRE
JRE(Java Runtime Environment,Java包括操作环境)JVM标准实现及Java核心类库。JRE是Java运行环境不是一个开发环境,所以不包括任何开发工具 JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释的类库lib。 (jre里有运行.class的java.exe) JRE ( Java Runtime Environment ),是运行 Java 程序是必不可少的(除非用其他编译环境编译成.exe可执行文件……),JRE的 地位就像一个PC就像机器,我们写的Win64应用程序需要操作系统帮助 同样,我们写的Java还需要程序JRE才能运行。
三、JVM
JVM(Java Virtual Machine),即java虚拟机, java运行环境,JVM它是一种用于计算设备的规格,它是一种虚构的计算机,通过在实际计算机上模拟各种计算机功能来实现。针对java用户,即可操作的用户.class文件包(jar或者war)的用户。主要包括在内jvm和java基本类库运行时(rt.jar)。rt.jar可以简单粗暴地理解为:就是java编译成源码jar包。Java在执行字节码时,虚拟机将字节码解释为特定平台上的机器指令。这就是Java能一次编译,到处操作的原因。
四、JDK、JRE、JVM三者之间的联系异
1.三者联系: 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文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM分析这些字节码,映射到CPU指令集或OS系统调用。
二、三者区别: 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。
参考文献:http://playkid.blog.163.com/blog/static/56287260201372113842153/ https://baike.baidu.com/item/JVM/2902369?fr=aladdin