jre 的作用和组成 详解手册
JRE 全称 Java Runtime Environment,也就是 Java 运行环境,核心作用是提供可以运行已经编译好的 Java 字节码程序的完整环境,用户只需要运行 jar 包 class 文件的时候,只安装 JRE 就足够,不需要安装完整开发套件,它负责加载类文件 执行字节码 提供基础核心类库 处理内存管理 异常处理 图形界面支持等底层能力,很多初学者会混淆 JRE JDK JVM 三者关系,JRE 里面已经内置 JVM,但是 JRE 不包含编译器 javac,不能用来编写和编译 Java 源代码,本篇深度讲解 JRE 的核心作用 内部组成模块 工作流程,同时区分和 JDK JVM 的差异,适合 Java 入门学习,运维部署 Java 应用场景使用。
核心作用详细说明
第一 字节码执行支撑,Java 源码编译之后生成 class 字节码,字节码本身不能直接在操作系统运行,JRE 里面的 JVM 负责把字节码解释或者即时编译成当前操作系统可以识别的机器指令,实现跨平台运行。
第二 提供基础核心类库,Java 自带大量基础类,比如集合 IO 网络 多线程 时间日期类,这些类都打包放在 JRE 里面,Java 程序运行的时候直接调用,不需要开发者自己重复编写底层代码。
第三 运行时基础服务,包含垃圾回收 GC 内存分配 安全管理 系统属性读取 图形 AWT Swing 支持,网络通信底层接口,保障 Java 应用稳定运行。
第四 部署运行支撑,企业里面部署后端服务 桌面 Java 软件,服务器端一般只部署 JRE,降低安装包体积,只保留运行所需组件,不附带开发工具。
JRE 内部组成分层
第一层 JVM 虚拟机模块
这是 JRE 最核心部分,负责字节码执行,内部又分为类加载器 执行引擎 运行时数据区,运行时数据区包含堆 栈 方法区 程序计数器,执行引擎包含解释器和 JIT 即时编译器,垃圾回收器也属于 JVM 内部组件。
第二层 核心类库 rt 相关基础类库
也就是 Java 核心 API,是预先写好的类集合,包含 java.lang java.util shturl. java.net这些基础包,程序运行时调用这些类完成业务逻辑。
第三层 辅助组件
包含部署工具 插件 安全管理组件 国际化资源 字体支持 图形相关库,AWT Swing 图形组件,用于桌面 GUI 程序,还有 Java Web Start 相关组件,旧版本 JRE 还附带浏览器 Java 插件,现代新版本已经移除这个插件。
组成模块对照表
模块名称 所属层级 主要功能
JVM 核心执行层 加载执行字节码 内存管理 GC
核心类库 API 层 提供基础 Java 类 API 调用
辅助组件 扩展支撑层 安全 图形 部署 国际化
JRE JDK JVM 三者关系表格
项目 JRE JDK JVM
是否包含 JVM 是 是 本身就是 JVM
是否包含 javac 编译器 否 是 否
用途 运行 Java 程序 开发编译 Java 程序 字节码执行引擎
是否跨平台 是 是 是
运行工作流程
第一步 Java 程序启动,JRE 启动对应的 JVM 实例
第二步 类加载器按照规则加载需要的 class 字节码文件
第三步 执行引擎读取字节码,解释执行或者 JIT 编译为本地机器码
第四步 程序运行期间,自动调用核心类库里面的 API,GC 自动回收不再使用的内存
第五步 程序退出,JVM 释放全部运行内存资源,JRE 运行流程结束
重要补充知识点
旧版本 JRE 也就是 Java8 及之前版本,安装包体积比较大,里面包含浏览器插件,后来因为安全漏洞,高版本 Java 已经废弃浏览器插件,JRE 组件精简,从 Java9 之后模块化改造,JRE 独立安装包的设计发生变化,很多场景推荐直接使用 JDK,JDK 本身已经包含 JRE 全部运行能力。
命名冲突误区,很多人以为 JRE 只是单独一个软件,它不是单纯一个 exe 程序,是一整套文件目录体系,安装之后目录里面有 bin lib 等文件夹,bin 存放可执行启动程序,lib 存放类库文件。
整体总结,JRE 定位就是纯运行环境,核心由 JVM 加核心类库加辅助组件三大部分构成,核心使命就是让编译好的 Java 字节码跨平台运行,如果只需要运行 Java 程序选择 JRE,如果需要写代码编译源码就必须安装 JDK,JDK 是在 JRE 基础之上额外增加开发编译工具。
【常见问题】
问题 1 jre 的作用和组成里面,JRE 里面有没有 javac 编译器
回答 1 jre 的作用和组成里面,JRE 不包含 javac 编译器,javac 属于 JDK 开发工具组件,如果想要编译 java 源码,只安装 JRE 是无法完成编译操作的。
问题 2 jre 的作用和组成里面,JRE 和 JVM 是什么关系
回答 2 jre 的作用和组成里面,JVM 是 JRE 内部最核心组成部分,JRE 是完整运行环境,JVM 只是负责执行字节码的虚拟机模块,JRE 除了 JVM 之外还附带核心类库和辅助组件。
问题 3 jre 的作用和组成里面,服务器部署 Java 应用只装 JRE 可以吗
回答 3 jre 的作用和组成里面,如果服务器只需要运行已经编译完成的 Java 应用,不需要编译源码,单独安装 JRE 就可以满足运行要求,这也是生产服务器常用部署方案。
【免责申明】
本文属于 Java 基础技术科普,不同大版本 JRE 组件存在改动,Java9 之后模块化体系有调整,正式生产部署请对照对应版本官方文档,代码与部署方案仅用于学习参考。
相关阅读
-
腌制芹菜叶核心要点就是先焯水去涩,控干所有水分再拌料,水分控不干很容易发酸变质,芹菜叶本身自带一点涩味...浏览全文>>
-
JRE 全称 Java Runtime Environment,也就是 Java 运行环境,核心作用是提供可以运行已经编译好的 Java...浏览全文>>
-
硬的奇异果可以吃,没有毒性,但是口感很硬、酸涩感很重,淀粉还没有转化成糖分,甜度很低,而且里面蛋白酶活...浏览全文>>
-
jojo 第五部黄金之风里面,波波也就是简皮耶尔波鲁纳雷夫,正式登场是动画第 28 集,这一集标题是《黄金体...浏览全文>>
-
普通一字型啤酒开瓶器利用杠杆原理撬开啤酒瓶盖,操作简单,找好卡扣位置是关键,使用的时候要把开瓶器卡槽卡...浏览全文>>
-
jks 是 JK 制服的简称,JK 原本是日语女高中生的意思,jks 制服就是女高中生风格的校服衍生服饰,属于二...浏览全文>>
-
酒在中国古典诗词里是非常重要的意象,古人借酒抒怀,有的用来送别饯行,有的抒发壮志豪情,有的排遣忧愁,还...浏览全文>>
-
JEEP 品牌起源于美国,现在归属 Stellantis 斯泰兰蒂斯集团,这个集团是跨国汽车集团,很多人会混淆品牌诞...浏览全文>>
-
牛蛙肉质细嫩紧实,自带鲜甜,没有厚重的腥味,适合香辣、清蒸、泡椒、干锅等多种做法,想要做好牛蛙重点是去...浏览全文>>
-
Java 是一门跨平台的高级编程语言,最核心用途是开发企业级后端服务,同时还可以开发桌面程序 安卓应用 大...浏览全文>>
- java 是开发什么的 应用领域深度解析
- itunes 怎么打不开了 Windows 启动故障排查
- 蜜都面膜是假货吗 资质和辨别说明
- ipv6 地址怎么填写 详细配置指南
- iphone 原彩显示省电吗 耗电原理详解
- iphonex 什么时候上市的 首发时间与发售节点
- 鸡蛋果怎么吃好吃 百香果多种吃法教程
- iphone7 什么时候上市的 发布开售时间
- ipad 激活锁怎么强制解除 官方正规解除方案说明
- ipad 充不进去电是怎么回事 原因解析 + 排查方案
- 干茶树菇要泡多久 泡发实操指南
- internet 最初由谁建立 ARPANET 起源考点
- 大米火腿粥的做法家常暖粥
- implementation 单词全解 词性派生与搭配详解
- 臭豆腐的做法大全 家常多款烹饪做法
- ie 浏览器网址是啥 概念区分与入口说明
- 炒面简单好吃做法 家常快手版本
- i58300h 压得住 1060 八代标压搭配笔记本显卡
- i5 2400 还可以玩 Csgo 吗 二代老 CPU 游戏可行性解析
- 白斩鸡的正确做法 皮爽肉嫩浸鸡标准流程
