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

3.JDK+JRE组件构成与协作

目录

  • 引言
  • 一、藏在背后默默干活的 “大神”
  • 二、JDK与JRE——核心组件和它们的本事
    • 2.1 JRE(Java Runtime Environment):程序的 “动力引擎”
    • 2.2 JDK(Java Development Kit):开发者的 “创意工坊”
  • 三、为啥 Java 离了 JDK/JRE 就不行?
  • 四、如何理解JDK与JRE的协作流程?
  • 五、学会这玩意儿能解决啥实际问题呢?
  • 总结

引言

咱今儿个就一头扎进 Java 世界,好好唠唠 “JDK/JRE 组件构成与协作”。这可算得上是 Java 程序的 “根基” 啦,打个比方吧,就好比汽车的 “发动机” 和 “驾驶舱”,那作用可大了去了!JRE 能让程序顺利跑起来,JDK 呢,则能让开发者把程序给造出来。
在这里插入图片描述

一、藏在背后默默干活的 “大神”

其实啊,JDK 和 JRE 在咱平常生活的好多场景里都藏着呢,只不过咱可能没咋注意。

  • 手机APP:就说咱手机里那些 APP 吧,像刷短视频用的抖音,它后台推荐算法说不定就是用 Java 编写的。开发团队得靠 JDK 来写代码,写完之后,这个算法就在服务器的 JRE 里一直运行着,实时给咱计算推送喜欢看的内容,可方便了。

  • 在线教育平台:还有在线教育平台,咱学习看直播课的时候,后台统计有多少人同时在线的那个 “并发人数统计” 功能,靠的就是 Java 程序在 JRE 里高效地处理数据呢。

  • 智能设备:再瞧瞧智能家居这一块,就拿小米网关这种智能家居控制中心来说,它底层设备通信逻辑可能就是用 Java 实现的,运行的时候得依靠 JRE 的轻量化版本。

咱用外卖 APP 点餐的时候,从选菜品、算价格,再到通知骑手,这一连串操作背后,全是 Java 程序在 JRE 里 “呼呼” 地快速运转呢。而这些程序最初都是开发者用 JDK 精心设计编写出来的。

二、JDK与JRE——核心组件和它们的本事

2.1 JRE(Java Runtime Environment):程序的 “动力引擎”

Java 运行时环境,这可是 Java 程序运行的 “地盘”,它有两个关键部分:

  • JVM(Java虚拟机):这就像是 Java 程序的 “翻译官”,负责把统一的 Java 代码,变成不同设备能明白的 “话”。

  • 核心类库:这好比是一个 “预制工具箱”,里面都是现成的功能代码,像处理时间、显示文字、网络连接这些功能都有。

有了它们,Java 程序不管在电脑、手机还是服务器这些设备上,都能稳稳地运行。

2.2 JDK(Java Development Kit):开发者的 “创意工坊”

Java 开发工具包,那可是程序员手里的 “宝贝工具集”。它不仅包含完整的 JRE,还额外带了不少好东西:

  • 编译器:能把开发者写的那些 “人能看懂的代码”,转换成 JVM 能识别的 “字节码”。

  • 文档工具:可以自动生成代码的使用说明书,方便得很。

  • 调试工具:专门帮开发者揪出代码里的错误。

有了这些,开发者就能从无到有地去设计、编写、测试 Java 程序啦。
在这里插入图片描述

这么总结一下哈:

  • JDK = JRE + 开发工具(让程序“能被写出来”)。

  • JRE = JVM + 类库(让程序“能跑”);

三、为啥 Java 离了 JDK/JRE 就不行?

1. 没了 JRE,程序就像没发动机的汽车,跑不起来

跨平台运行:不同的设备,像 Windows 电脑和安卓手机,它们 “说话” 的方式不一样。JRE 里的 JVM 就能把 Java 代码统一翻译一下,这样就能实现 “一次编写,到处运行” 啦。给你举个例子,用 Java 写的天气预报程序,咱不用专门为手机和电脑分别开发,用户只要在对应的设备上安装好 JRE,就能用这个程序查看天气啦。

2. 没了 JDK,开发者就像没工具的建筑师,啥都干不了

标准化开发:JDK 提供了统一的工具和规则,全球的开发者都按照这个标准来写代码,这样就能避免大家各写各的,到最后代码都不兼容的问题。比如说有两个团队一起开发同一个电商网站,都用 JDK 的编译器来编译代码,这样双方的代码就能很顺利地合到一块儿,没啥问题。

这里面还有不少核心优势呢:

  • 简化开发:JDK 的工具能帮开发者少写好多重复的代码,效率大大提高。

  • 稳定运行:JRE 的类库都是经过严格测试的,这样程序出错的可能性就小多了。

  • 灵活扩展:不管是手机 APP 这种小应用,还是大型服务器那种大项目,JDK/JRE 都能满足不同规模的需求。

四、如何理解JDK与JRE的协作流程?

咱来仔细琢磨琢磨从有个想法到程序能运行起来,这里面的门道。

【关键步骤:从 “想法冒头” 到 “程序撒欢跑” 】

  1. 开发者设计功能:心里先琢磨好要实现个啥功能。比如说打算做一个能自动计算平均分的程序。这时候不用急着写代码,先把功能想明白、理清楚就行。

  2. 用JDK“翻译”需求:接下来就靠 JDK 大显身手啦。开发者得借助 JDK 里的各种工具,把之前想好的功能需求转化成 “字节码”。这字节码就好比是一份 “全球通用的说明书”,不管啥设备,只要认得这 “说明书” 就行。

  3. JRE“执行”字节码:然后就轮到用户设备上的 JRE 上场干活啦。JRE 读取这个字节码,这里面 JVM 就开始发挥它的 “解读” 本事,就像认真看 “说明书” 一样。而类库呢,这时候就把 “计算平均分” 所需的现成功能拿出来用。

  4. 输出结果:最后结果就出来啦,用户能看到最终算好的平均分,比如说 85 分。在整个过程里,开发者压根不用操心用户用的是 Windows 系统的电脑,还是苹果的 Mac 电脑,反正都能行得通。

这么打个比方来理解哈:

  • JDK = 设计师的“绘图软件+尺子”(将想法变成“施工蓝图”);

  • JRE = 施工队的“挖掘机+工人”(按蓝图盖房子,无需知道蓝图如何画成)。

五、学会这玩意儿能解决啥实际问题呢?

案例1:解释“程序打不开”的原因

要是朋友给你发了个 Java 程序,你双击之后却弹出提示说 “无法运行”,这时候你心里就得有个底儿,大概率是他的电脑没安装 JRE。这就好比汽车没装发动机,程序自然启动不起来啦。这时候你就建议他安装对应的 JRE 版本,问题可能就解决了。

案例2:选择合适的“工具包”

要是你只是个普通用户,就想运行别人开发好的 Java 程序,比如股票分析软件啥的,那你只需要安装 JRE 就行。为啥呢?因为它比较轻量级,也不占啥空间,能满足咱运行程序的需求。

但要是你自己想写程序,像开发个小游戏啥的,那必须得安装 JDK。毕竟它里面除了包含 JRE,还有各种开发工具,没这些工具可没法开工。

案例3:理解“跨平台”的局限性

要是碰到一个 Java 程序只能在 Windows 系统上运行,这可能是开发者在开发的时候用了 JDK 里那些 “非跨平台” 的工具。比如说调用了 Windows 系统特有的功能。这时候你就得提醒开发者,“尽量用 JDK 的标准类库,可别太依赖特定系统的工具啦”。

总结

这么一看,JDK 和 JRE 在 Java 这个大家庭里,那可就是 “基石” 一般的存在。JDK 是开发者这个 “创造者” 手里的得力工具,JRE 是程序运行者所依赖的环境。它们俩相互配合,让 Java 程序开发起来轻松,运行起来也自由自在的。记住这个核心要点哈:JDK 负责生成程序,JRE 负责运行程序,JVM 负责实现跨平台。 这一套逻辑搞清楚了,对 Java 的理解又能更上一层楼啦!

http://www.xdnf.cn/news/16450.html

相关文章:

  • Qt 窗口 工具栏QToolBar、状态栏StatusBar
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测(C#代码,UI界面版)
  • 基于Django的天气数据可视化分析预测系统
  • 背包DP之多重背包
  • python 阿里云 安装 dashscope的简介、安装
  • 【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
  • 算法竞赛阶段二-数据结构(36)数据结构双向链表模拟实现
  • bash的特性-bash中的引号
  • 力扣131:分割回文串
  • 智能化设备健康管理:中讯烛龙预测性维护系统引领行业变革
  • 零基础,如何入手学习SAP?
  • ASP.NET Core 高并发万字攻防战:架构设计、性能优化与生产实践
  • OpenLayers 综合案例-地图绘制
  • 使用低级上位画图法理解在对磁盘空间进行容量分配时【低级单位上位至高级单位的换算】
  • 【论文阅读】ON THE ROLE OF ATTENTION HEADS IN LARGE LANGUAGE MODEL SAFETY
  • Flutter开发实战之CI/CD与发布流程
  • Unity SMAA
  • 结合Golang语言说明对多线程编程以及 select/epoll等网络模型的使用
  • 携带参数的表单文件上传 axios, SpringBoot
  • 从零开始:Coze Studio开源版部署全记录(win11)
  • 设计模式(六)创建型:单例模式详解
  • C#中Visual Studio平台按照OfficeOpenXml步骤
  • HAProxy 实验指南:从零开始搭建高可用负载均衡系统
  • Reeden:跨平台 AI 电子书阅读器
  • C 与 C++ 的区别:发展、特性及优缺点详解
  • 使用Netty搭建一个网络聊天室
  • VS Code + LaTeX 绘制电气图完全指南(含 PlantUML 样式参考)
  • 2025年全国青少年信息素养大赛Scratch算法创意实践挑战赛 小低组 初赛 真题
  • Javaweb————HTTP消息体拆分讲解
  • 【嵌入式电机控制#20】无刷直流电机硬件案例