当前位置: 首页 > news >正文

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。
http://www.lryc.cn/news/540410.html

相关文章:

  • elasticsearch在windows上的配置
  • vscode 配置 Copilot 提示GHE.com连接失败
  • Pycharm+CodeGPT+Ollama+Deepseek
  • Unreal5从入门到精通之在编辑器中更新 UserWidgets
  • C语言修炼手册
  • Linux部署ollama
  • 跨语言语义理解与生成:多语言预训练方法及一致性优化策略
  • 最新华为 HCIP-Datacom(H12-821)2025.2.20
  • TS语言自定义脚手架
  • 深度学习-122-大语言模型LLM之基于langchian自定义国内联网查询工具并创建智能代理
  • Docker Desktop 入门教学
  • PyCharm 中的 %reset -f 功能:一键重置控制台变量
  • ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek
  • 在Logback中拦截和修改日志
  • Compose 定制UI视图
  • 《STL 六大组件之容器探秘:深入剖析 string》
  • DeepSeek 助力 Vue 开发:打造丝滑的点击动画(Click Animations)
  • SeaTunnel社区「Demo方舟计划」首期活动上线—— MySQL CDC实时同步至PostgreSQL实战
  • Python中常见库 PyTorch和Pydantic 讲解
  • 基于springboot校园健康系统的设计与实现(源码+文档)
  • 一文2000字从0到1用Jmeter全流程性能测试实战
  • 【SFRA】笔记
  • 马拉车算法
  • Debezium同步之如何同步GIS数据
  • 自动化之ansible(二)
  • Docker+Dify部署DeepSeek-r1本地知识库
  • C#基础:使用Linq进行简单去重处理(DinstinctBy/反射)
  • HTML5 面试题
  • 【C++】优先级队列宝藏岛
  • 开关电源实战(一)宽范围DC降压模块MP4560