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

Java基础面试题--jdk和jre的区别

Java基础面试题–jdk和jre的区别


1. JDK 和 JRE 是什么?

(1)JDK:Java 开发工具包(Java Development Kit)
  • 通俗比喻
    JDK 就像是一个“厨房”里的全套工具。如果你要自己做饭(写代码),你需要锅碗瓢盆(编译器、调试工具等)。
    • 核心功能
      • 编译代码:将你写的 Java 代码(.java 文件)转换成计算机能理解的字节码(.class 文件)。
      • 调试程序:帮你检查代码哪里出错了。
      • 打包程序:把多个文件打包成一个 .jar 文件,方便分发。
    • 包含内容
      • JRE:JDK 自带了 JRE,所以你也能用它运行 Java 程序。
      • 开发工具:比如 javac(编译器)、jdb(调试器)、javadoc(生成文档的工具)等。
(2)JRE:Java 运行时环境(Java Runtime Environment)
  • 通俗比喻
    JRE 就像是“餐桌”上的餐具。如果你只是想吃别人做好的饭(运行别人写的 Java 程序),只需要餐具就能吃饭。
    • 核心功能
      • 运行 Java 程序:提供运行 Java 字节码(.class.jar 文件)所需的环境。
    • 包含内容
      • JVM(Java 虚拟机):负责执行 Java 程序的核心组件。
      • 基础类库:比如 java.lang(基本数据类型)、java.util(集合工具)等。

2. JDK 和 JRE 的作用

(1)JDK 的作用
  • 开发 Java 程序
    如果你想写 Java 代码并运行它,必须安装 JDK。
    • 编译代码:用 javac.java 文件编译成 .class 文件。
    • 运行程序:用 java 命令运行编译后的程序。
    • 调试和优化:用调试工具检查代码问题,用性能分析工具优化程序。
(2)JRE 的作用
  • 运行 Java 程序
    如果你只想运行别人写好的 Java 程序(比如 Minecraft 游戏、企业管理系统等),只需要安装 JRE。
    • 加载并执行字节码:JRE 中的 JVM 会将 .class.jar 文件转换成计算机能执行的指令。
    • 提供基础功能:比如字符串处理、网络通信等,通过 JRE 自带的类库实现。

3. 应用场景

(1)JDK 的应用场景
  • 开发阶段
    • 编写 Java 代码(比如用 IntelliJ IDEA、Eclipse 等 IDE)。
    • 编译代码(javac)和运行程序(java)。
    • 生成 API 文档(javadoc)或打包程序(jar)。
  • 调试和测试
    • 用调试工具(jdb)排查代码错误。
    • 用性能分析工具(jvisualvm)优化程序性能。
(2)JRE 的应用场景
  • 运行阶段
    • 用户运行 Java 程序(比如运行 .jar 文件的游戏或软件)。
    • 服务器部署 Java 程序(比如运行 Spring Boot 项目)。
  • 轻量级环境
    • 在资源有限的设备(如 IoT 设备)上运行 Java 程序。

4. JDK 和 JRE 的核心区别

特性JDKJRE
目标用户开发者(写代码的人)普通用户(运行程序的人)
是否包含编译器✅ 包含(javac 等工具)❌ 不包含
是否包含 JVM✅ 包含(通过内置的 JRE)✅ 包含
体积大小较大(包含开发工具)较小(仅运行时组件)
典型文件bin(开发工具)、librt.jar(运行时类库)
版本变化Java 9+ 模块化后,JDK 集成 JREJava 9+ 后 JRE 通常随 JDK 分发

5. 实际应用中的选择

  • 如果你是开发者
    必须安装 JDK。因为只有 JDK 才能编译、调试和运行代码。

    • 例如:开发 Android 应用、Web 项目(Spring 框架)等。
  • 如果你只是运行程序
    只需安装 JRE。但现代实践中,很多人直接安装 JDK,因为 JDK 已包含 JRE。

    • 例如:运行 Minecraft、企业管理系统等。

6. 版本变化的注意点

  • Java 8 及之前
    JDK 会单独包含一个独立的 JRE 目录(如 jdk1.8.0_301/jre)。
  • Java 9 及之后
    • 模块化系统(JPMS):JDK 不再单独提供 JRE,而是通过模块化动态裁剪运行时。
    • 轻量化 JRE:开发者可以用 jlink 工具自定义生成最小化的运行时环境。

总结

  • JDK 是开发 Java 程序的“厨房”,包含编译器、调试器等工具。
  • JRE 是运行 Java 程序的“餐桌”,提供运行环境和基础类库。
  • 开发者用 JDK用户用 JRE。但现代实践中,JDK 已整合运行环境,安装 JDK 即可满足需求。
http://www.xdnf.cn/news/9972.html

相关文章:

  • openbmc kvm vnc client connection
  • 四、若依从数据库
  • 【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议
  • 数据结构数组总结
  • 大模型调用数据库表实践:基于自然语言的SQL生成与数据查询系统
  • 石油炼化厂融合定位系统人员管控解决方案
  • 阿里云服务器ECS详细购买流程【新手购买手册】
  • 小白的进阶之路系列之六----人工智能从初步到精通pytorch数据集与数据加载器
  • 学习STC51单片机20(芯片为STC89C52RCRC)
  • Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)
  • 字体查看器
  • C学习-头文件
  • iVX 如何用 VL 中间语言构建程范式闭环?
  • [SC]SystemC语法小结(一)
  • Linux部署python项目为服务,开启自启动
  • 上传图片转成3D VR效果 / 用photo-sphere-viewer实现图片VR效果 / VR效果在项目中落地实践
  • WebBuilder赋能中山欣锠鞋业数字化转型实践
  • Web 系统验证码与登录安全防护全攻略(附实现方案)
  • The CTeX fontset “fandol“ is unavailable in the current mode.
  • 复合机器人:纠偏算法如何重塑工业精度与效率?
  • AET3156AP电源方案 禾纳代理商
  • 1.什么是node.js、npm、vue
  • vue3 各种数据处理
  • Spring 核心知识点补充
  • 文档处理的相关工具
  • MMR搜索和LangChain整合Milvus实战
  • 小白的进阶之路系列之七----人工智能从初步到精通pytorch自动微分优化以及载入和保存模型
  • 高精度、高效率:正面吊箱号识别系统如何实现精准识别
  • 多模态大模型:开启智能决策的新时代
  • TimeoutException问题排查