JDK、JRE、JVM三者间的联系与区别
JDK、JRE、JVM三者间的联系与区别
作为具有多年经验的老程序员,大家都知道Java程序是运行在JVM(Java虚拟机)上的,而开始前都会去搭建Java环境,主要的就是JDK的安装和配置。那么JDK、JRE和JVM之间又有什么样的联系呢?区别又是什么?下面将详细的做介绍。
1、JDK
JDK (Java Development Kit),是Java开发工具包,是sun公司针对Java开发员的产品,是Java的核心,它提供了各种工具和资源,包括Java编译器、运行环境JRE,以及Java的基础类库。
下图是JDK的目录结构:
- bin:最主要的是编译器(javac.exe)、运行工具(java.exe)
- db:jdk从1.6之后内置了Derby数据库,它是是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。(只做了解)
- include:Java和JVM交互用的头文件
- jre:Java运行环境
- lib:类库(jdk工具的一些补充jar包)
注意:这里的bin和lib跟jre中的bin和lib是不一样的。
2、JRE
JRE(Java Runtime Environment),是Java程序运行时环境,包含了JVM、runtime class libraries和Java application launcher等运行Java程序的必要组件。
与JDK不同,JRE是运行环境,并不像JDK一样是开发环境,所以并不包含任何开发工具(例如编译器、调试器)。
下图是JRE的目录结构:
- bin:就是JVM
- lib:JVM工作所需要的类库
3、JVM
JVM(Java virtual machine),也叫Java虚拟机,它是Java实现跨平台的最核心的部分。
所有的Java程序会首先被编译为.class可执行的字节码文件,该文件可以在Java虚拟机上执行,再由Java虚拟机间接与不同操作系统进行交互,虚拟机将程序解释给系统执行。
光有JVM并不能完成.class的执行,解释class的时候JVM需要调用解释所需要的类库lib。
在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。
联系和区别:
- JDK是面向开发者的,是开发环境,JRE是面向使用JAVA程序的用户,是运行环境
- JDk包含 JRE,JRE包含 JVM
- JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。
可以使用下面一幅图来总结:
参考博客:
https://www.cnblogs.com/bingyimeiling/p/10266949.html
https://www.cnblogs.com/iskandar/p/8933340.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!