什么?你还不知道JDK、JRE 、JVM三者的关系?

如题,是不是觉得很不可思议 ?在写这篇文章的时候,我也觉得作为Java程序员,jdk、jre、jvm之间的关系不应该不清楚,然而,事实是很多人在工作几年后,都不清楚这三者之间的关系。今天就让我们一起来梳理一下他们之间的关系。

JDK、JRE 和 JVM 是 Java 技术的三个核心组件,它们之间是层层包含的关系。理解它们的关系对Java开发和部署至关重要:


1. JDK(Java Development Kit,Java开发工具包)

  • 作用:为开发Java程序提供完整工具链。

  • 包含内容

    • 编译器 javac

    • 调试器 jdb

    • 打包工具 jar

    • 文档生成器 javadoc

    • 其他实用工具(如 javap, jconsole

    • JRE(含JVM和核心库)

    • 开发工具:

  • 典型用户Java开发者(需要编写、编译、调试代码)。


2. JRE(Java Runtime Environment,Java运行环境)

  • 作用:为运行Java程序提供环境(不包含开发工具)。

  • 包含内容

    • JVM
    • Java核心类库(如 java.lang, java.util, java.io 等)
    • 其他支持文件(如属性配置文件、字体等)
  • 典型用户: 只需要运行Java程序的用户(如使用Java开发的桌面应用或Web应用的用户)。 不包含编译器(javac)、调试器等开发工具。


3. JVM(Java Virtual Machine,Java虚拟机)

  • 作用:执行编译后的Java字节码(.class文件)。提供跨平台能力(“Write Once, Run Anywhere”)。

  • 核心功能

    • 加载字节码
    • 验证代码安全性
    • 解释/编译字节码为机器码(JIT编译器)
    • 内存管理(垃圾回收)
  • 关键点: JVM是运行时环境,依赖不同操作系统(Windows/Linux/macOS)有不同实现。 开发者无法直接下载独立JVM,它作为JRE或JDK的一部分存在。


✅ 三者的层级关系

在这里插入图片描述


📌 关键总结

组件用途是否包含开发工具是否包含JVM
JDK开发+运行✅ 包含(如javac
JRE仅运行❌ 不包含
JVM执行字节码❌ 不包含❌(JVM自身)

⚠️ 实际应用场景

  • 开发环境:需安装 JDK(例如编写代码并执行 javac HelloWorld.java)。
  • 生产环境:只需 JRE 即可运行Java程序(例如用户运行 java HelloWorld)。
  • 现代变化:从 Java 9 开始,官方不再提供独立的JRE下载(因模块化系统引入),而是通过JDK生成定制化JRE(使用 jlink 工具)。

一句话概括

官方不再提供独立的JRE下载(因模块化系统引入),而是通过JDK生成定制化JRE(使用 jlink 工具)。


一句话概括

**开发者用JDK写代码,用户用JRE跑程序,JVM在底层默默执行字节码。**没有JVM,Java无法跨平台;没有JRE,JVM无法独立工作;没有JDK,开发者无从下手。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值