Java中JDK、JRE,JVM之间的关系

Java中的JDKJREJVM 是三个核心概念,其关系可概括为JDK > JRE > JVM,具体如下:


一、定义与作用

  1. JDK(Java Development Kit)

    • 定义:Java开发工具包,用于开发和编译Java程序。
    • 包含内容 :JRE + 开发工具(如javac编译器、jar打包工具、javadoc文档生成工具等) + 基础类库。
    • 适用场景:开发者使用,需安装JDK以编写和调试代码。
    • 示例 :开发Java应用时,需通过javac.java文件编译为.class字节码文件148
  2. JRE(Java Runtime Environment)

    • 定义:Java运行环境,用于执行已编译的Java程序。
    • 包含内容 :JVM + 核心类库(如rt.jar,提供基本数据类型、线程、IO等支持)。
    • 适用场景:用户运行Java程序时只需安装JRE。
    • 示例 :用户双击.jar文件时,JRE中的java.exe会启动JVM执行字节码137
  3. JVM(Java Virtual Machine)

    • 定义 :Java虚拟机,负责将字节码(.class文件)解释或编译为机器码执行。
    • 核心功能:跨平台支持(不同操作系统需安装对应的JVM) + 内存管理(堆、栈等运行时数据区) + 垃圾回收。
    • 示例 :同一份.class文件可在Windows、Linux的JVM上运行,无需重新编译158

二、三者关系

  1. 层级结构

    • JDK 包含JRE和开发工具。
    • JRE 包含JVM和核心类库。
    • JVM 是执行字节码的核心,依赖JRE中的类库支持148

    图解

    复制代码
    JDK = JRE + 开发工具(javac、jar等)  
    JRE = JVM + 核心类库(rt.jar等)
  2. 功能区别

    • JDK vs JRE :JDK包含编译工具(如javac),JRE仅用于运行程序。
    • JRE vs JVM :JVM需依赖JRE的类库(如rt.jar)才能执行字节码7814
  3. 实际目录验证

    • JDK安装目录下存在jre子目录,内含bin(JVM)和lib(核心类库)。
    • 若仅安装JRE,则目录中无javac等开发工具357

三、典型应用场景

  1. 开发阶段 :开发者需安装JDK,利用javac编译代码并调试。
  2. 部署阶段 :用户仅需JRE即可运行编译后的程序(如.jar文件)。
  3. 跨平台运行 :JVM屏蔽操作系统差异,实现"一次编译,到处运行"189

四、总结

  • JDK 是开发者的"工具箱",JRE 是程序的"运行舞台",JVM是跨平台的"翻译官"。
  • 三者的选择:
    • 开发Java程序 → 安装JDK
    • 运行Java程序 → 安装JRE(或直接使用JDK自带的JRE)。
    • 深入理解底层 → 研究JVM 的内存模型和垃圾回收机制4814
相关推荐
小萌新上大分24 分钟前
SpringCloudGateWay
java·开发语言·后端·springcloud·springgateway·cloudalibaba·gateway网关
直视太阳1 小时前
springboot+easyexcel实现下载excels模板下拉选择
java·spring boot·后端
Code成立2 小时前
《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》第2章 Java内存区域与内存溢出异常
java·jvm·jvm内存模型·jvm内存区域
一 乐2 小时前
实验室预约|实验室预约小程序|基于Java+vue微信小程序的实验室预约管理系统设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·毕业设计·论文·实验室预约小程序
程序媛学姐2 小时前
SpringRabbitMQ消息模型:交换机类型与绑定关系
java·开发语言·spring
努力努力再努力wz2 小时前
【c++深入系列】:类与对象详解(中)
java·c语言·开发语言·c++·redis
兰亭序咖啡2 小时前
学透Spring Boot — 009. Spring Boot的四种 Http 客户端
java·spring boot·后端
独行soc2 小时前
2025年渗透测试面试题总结- 某四字大厂面试复盘扩展 一面(题目+回答)
java·数据库·python·安全·面试·职场和发展·汽车
早上好啊! 树哥2 小时前
常见的文件加密方式之【异或加密】,代入原理看例子,帮助更好的理解。
android·java·junit
兰亭序咖啡3 小时前
学透Spring Boot — 018. 优雅支持多种响应格式
java·spring boot·后端