java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > JVM、JRE、JDK之间的联系及区别

JVM、JRE、JDK之间的联系及区别说明

作者:Getgit

JVM、JRE和JDK是Java开发中三个关键组件,JVM是Java虚拟机,负责解析和执行Java字节码,JRE是Java运行环境,包含JVM和Java核心类库,JDK是Java开发工具包,包含JRE和编译工具,它们之间的关系是:JDK包含了JRE,JRE包含了JVM

JVM (Java Virtual Machine)

JVM(Java虚拟机)是一个可执行Java字节码的虚拟机进程,用于解析编译后的字节码文件。 JVM屏蔽了与操作系统平台相关的信息,可以把字节码解释成具体平台上的机器指令执行,这也是Java的能够 “一次编译,到处运行” 的原因。

既然JVM是“虚拟机”的意思,那么肯定要体现出来 : 可以把JVM类比为一台只针对Java程序的PC虚拟机,它通过实体计算机仿真各种计算功能来实现,JVM有自己完善的硬件架构,如处理器,堆栈,寄存器等,还有相应的指令集.

在Java的世界中,JVM的地位就像一台PC机器。JVM和PC物理机的宏观关系是这样的 :

JVM与物理PC的微观关系是这样的 :

Java世界中JVM与现实世界中的物理PC之间关系是这样的:

注意事项:

JVM的核心任务是解释字节码文件,它不能运行字节码文件。因为JVM执行class还需要JRE下的lib类库的支持,尤其是rt.jar,这一点非常重要。

JRE (Java Runtime Environment)

光有JVM还不能完成class的执行,需要搭配JRE才能正常运行程序员打好的jar包。因为在解释class的时候JVM需要调用解释所需要的类库lib,JRE里有运行.classjava.exe.

JRE是Java程序的运行环境,它包含JVM的标准实现及Java核心类库。需要注意的是 : JRE是Java的运行环境不是开发环境。JRE不包含任何开发工具,如:编译器、调试器等,因为JRE是面向Java程序(jar包)的,程序只需要运行不需要编译、调试等功能。如果只需要运行一些Java程序,只需要一个JRE就足够了,不需要安装JDK.

在Java的世界中,JRE的地位相当于是一台PC机器中的Windows操作系统. Windows操作系统可以运行.exe格式化的应用程序对应的JRE操作系统用于运行.jar格式的应用程序。

综上所述,Java世界中的JRE与现实世界中的PC操作系统之间关系是这样的 :

JDK (Java Development Kit)

JDK是java开发工具包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等。JDK是面向程序员的。

基本上每个学java的人都会先在机器 上装一个JDK,那它都包含哪几部分呢?

安装完jdk之后,切换至jdk的安装根目录,可以看到几个目录:bin、jre、src.zip、db、lib、include。

既然JDK安装目录中是包含JRE的,而JRE中是包含JVM的,所以电脑安装完JDK后就具备了开发Java源文件、编译class字节码文件、运行jar程序的功能。JDK直接打通了程序员与Java世界的壁垒,这就导致笔者到现在才搞清楚它们三者之间的关系,。

JVM、JRE、JDK三者之间的联系

综上所述,三者关系可以用下面一个场景来总结:

程序员借助JDK可以写好.Java源代码,然后使用JDK自带的javac命令将源代码编译为.class字节码文件,最后使用JDK的jar -cvf命令打包为jar包,到这一步JDK的使命就完成了。

有了jar包之后,下一步就是让jar跑起来,这一步就该JVM、JRE出场了,使用java -jar运行程序。

首先是在JRE上运行这些字节码,具体到字节码执行时就需要JVM解析字节码文件,并承担将字节码命令映射到CPU指令集或OS的系统调用。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文