JDK、JRE、JVM三者之间的关系与区别
JDK(Java Development Kit)是Java的开发工具包,主要运用在Java开发中,其中分为三个版本。
——SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,即Java SE,多使用在开发个人、小型的Java程序。
——EE(JavaEE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,即为Java EE,多使用在企业级的Java程序开发上。从2018年2月26日开始,J2EE改名为Jakarta EE;
——ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,即Java ME,多使用在开发手机端的Java程序。
如果没有安装JDK开发工具包的话,是无法进行编译Java源文件的,可以理解为每个Java工程师都必须要安装JDK否则无法进行Java程序的开发;同时JDK里面包含JRE。
JRE(Java Runtime Environment),指Java运行环境,是Sun公司开发的产品。是运行Java程序所必须的环境的集合,并且包含JVM标准实现及Java核心类库。
——JRE是Java程序的必要运行环境,如果没有安装JRE的话是无法运行Java程序的。
——JRE里面包含JVM,但不包含JDK开发工具包,所以只安装JRE是无法对Java程序进行编辑与开发的。
——如果只是运行与测试Java程序,只需要下载安装JRE即可。
没有安装JRE是无法运行Java程序的,所以如果不是开发人员只需要下载JRE即可,但不能对Java源文件进行修改与编译。
JVM(Java Virtual Machine)是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
——Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
——Java虚拟机本质是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。
——Java语言的可移植性正是建立在Java虚拟机的基础上。
——任何平台只要装该平台版本JVM,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”。
JVM其实是一个程序,主要用来解释字节码文件成二进制;JVM是直接运行在操作系统上的,而Java程序是运行在JVM上的,所以只要有安装相对应系统版本的JVM即可运行实现Java的“一次编译,多次运行”;其中,JVM不包含JRE与JDK,但JRE包含JVM。
结论:
1、JDK是个开发工具包用来开发Java程序,并且里面包含着JRE,所以完成对Java源文件的编写后即可立刻进行编译与运行测试,并进行相对应的修改,即Java开发人员所需要安装的工具;
2、JRE是Java程序的运行环境包,里面包含了JVM的实现标准与Java的核心类库,并且里面包含着JVM,即只使用Java程序或者测试人员所需要安装的工具;
3、JVM是Java的虚拟机,本质上是一个程序,运行在操作系统上,并主要是解释字节码文件,Java实现跨平台特性是建立在JVM之上的;并且JVM被包含于JRE当中,所以一般只要下载相对应版本的JRE即可运行Java程序。
即:JDK>JRE>JVM