JDK、JRE、JVM的联系和区别

JDK、JRE、JVM的联系和区别

JDK(Java Development Kit )(Java开发工具)

JDK,是整个JAVA的核心,包括了Java运行环境(JRE),JAVA工具(JAVAC/JAVA/JDB等)和JAVA基础类库(即JAVA API 包括 rt.jar)。
Java工具

◆ Javac:Java编译器,将Java源代码转换成字节码。

◆ Java:Java解释器,直接从类文件执行Java应用程序字节代码。

◆ appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。

◆ Javadoc:根据Java源码及说明语句生成HTML文档。

◆ Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量。

◆ Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。

◆ Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Java基础类库

◆ Java.applet:提供创建applet小程序所需要的类

◆ Java.awt:包含用于创建用户界面和绘制图形图像的所有类

◆ Java.io:提供与输入输出相关的类

◆ Java.beans:包含与开发javaBeans相关的类

◆ Java.lang:提供java语言程序设计的基础类

◆ Java.net:提供实现网络操作相关的类

◆ Java.nio:为输入输出提供缓冲区的类

◆ Java.text:提供处理文本、日期、数字和消息的类和接口

◆ Java.util:提供处理日期、时间、随机数生成等各种使用工具的类

◆ Javax.net:提供用于网络应用程序的类、网络应用扩展类

◆ Java.swing:提供一组与AWT功能相同的纯java的组件类
JRE(Java Runtime Environment)(Java运行环境)

JRE,是运行JAVA程序所必须的环境的集合,它包括JVM虚拟机、JAVA平台核心类和支持文件。
JVM(Java Virtual Machine)(Java虚拟机)

JVM,是整个JAVA实现跨平台的最核心的部分,所有的JAVA程序会首先被编译为.class的类文件,这种类文件可以在JAVA虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。只有JVM还不能成class的执行,因为在解释.class的时候JVM需要调用解释所需要的类库lib,而JRE包含lib类库。Java虚拟机是实现跨平台的核心机制。JAVA 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。 如图所示:

www.zeeklog.com  - JDK、JRE、JVM的联系和区别


在这里插入图片描述
JDK JRE JVM 关系图

www.zeeklog.com  - JDK、JRE、JVM的联系和区别

在这里插入图片描述
JAVA程序运行机制

Java首先利用文本编辑器编写 Java源程序,源文件的后缀名为.java;再利用编译器(javac)将源程序编译成字节码文件,字节码文件的后缀名为.class; 最后利用虚拟机(解释器,java)解释执行。如果图所示:

www.zeeklog.com  - JDK、JRE、JVM的联系和区别


在这里插入图片描述

参考文档:

https://www.cnblogs.com/zbl3033/p/3245944.html
https://www.sxt.cn/Java_jQuery_in_action/JVM_JRE_JDK.html