JDK、JRE、JVM 有什么区别?

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

定义:JVM 是执行 Java 字节码的虚拟计算机

主要功能

  • 提供 Java 字节码的运行环境

  • 将字节码解释/编译为机器码执行

  • 内存管理(包括垃圾回收)

  • 平台无关性的关键("Write Once, Run Anywhere")

特点

  • 不同平台有不同实现的 JVM(Windows、Linux、Mac 等)

  • 不包含 Java 编译器或开发工具

  • 不包含 Java 类库

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

定义:Java 程序的运行环境

包含内容

  • JVM

  • Java 核心类库(如 java.lang, java.util 等)

  • 其他支持文件

主要用途

  • 运行已编译的 Java 程序(.class 文件或 .jar 文件)

  • 不包含开发工具(如编译器、调试器等)

特点

  • 普通用户只需安装 JRE 即可运行 Java 程序

  • 体积比 JDK 小

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

定义:Java 开发工具包

包含内容

  • JRE(因此也包含 JVM)

  • 开发工具(如 javac, javadoc, jdb 等)

  • 额外的类库(开发专用)

主要用途

  • 开发 Java 应用程序

  • 编译 Java 源代码(.java 文件)

  • 调试 Java 程序

特点

  • 开发者必须安装 JDK

  • 包含完整的 Java 开发环境

三者的关系图示

JDK = JRE + 开发工具
JRE = JVM + 核心类库

使用场景对比

组件使用者主要用途是否包含编译器
JDKJava开发者开发、编译、运行Java程序
JRE终端用户运行已编译的Java程序
JVM系统底层支持执行Java字节码,提供运行环境

实际应用示例

  1. 开发者

    • 安装 JDK

    • 使用 javac 编译 .java 文件

    • 使用 java 命令运行程序(此时使用 JRE 中的 JVM)

  2. 普通用户

    • 只需安装 JRE

    • 双击 .jar 文件运行程序(由 JRE 中的 JVM 执行)

版本兼容性

  • 高版本 JDK 可以编译低版本 JRE/JVM 兼容的代码(通过 -source 和 -target 参数)

  • 低版本 JRE 无法运行高版本 JDK 编译的代码(会出现 UnsupportedClassVersionError)

开启新对话

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值