最通俗易懂的一篇文章了解JVM、JRE、JDK的关系是什么?
需要前期知识
JVM、JRE、JDK的关系?
我们了解了JVM是什么,JVM就行相当于我们的操作系统,是负责来解释或翻译.class文件的,识别.class中的指令,从而调用操作系统中的指令。
我们了解到JVM是使Java程序能够运行并且能够使之跨平台运行的核心
。但是JVM自己是干不了这一切的,就像“有了开发人员,为什么需要产品经理,为什么需要测试人员,为什么需要运维人员
”一样。
我们就好比是开发人员,但是你开发之前和之后的呢?什么你都不知道怎么开发?项目开发之后你如何保证正常使用?
JVM虽然功能强大,但是还是需要其他的小伙伴给它提供原料(.class文件
)。
仅仅是JVM
,是无法完成一次编译,处处运行的
。它需要一个基本的类库
,也就是我们很熟悉的API,比如怎么操作文件、怎么连接网络等
。
Java体系中,在一个程序执行的时候,JVM也会一起运行和一起销毁,会一次性将JVM运行所需的类库都传递给它。JVM标准加上实现的一大堆基础类库,就组成了Java的运行时环境
,也就是我们很熟悉的JRE
(Java Runtime Environment)。
有了JRE之后,我们的Java程序便可以在任意操作系统中运行了。
扩展:涨知识环节:
你可能听说过:
如果只是运行环境的话,只需要安装JRE即可
。 没错,如果只需要运行一些Java程序,只需要一个JRE就足够了
。
对于JDK来说,个体是非常庞大的。除了携带着JRE之外,JDK还提供了一些非常好用的小工具,比如:java、javac、jar等。它是Java开发的核心,就像给厨房提供各种料一样,从而能抄出美味的菜。
扩展:涨知识环节:
如果是开发环境就需要安装JDK了
。
JDK的全拼Java Development Kit。JVM、JRE、JDK他们三者之间的关系,可以用一个包含的关系表示。
三者包含关系:
JDK>JRE>JVM
- cordova插件- Network Information
- SpringCloud配置中心客户端读取配置
- cordova插件- Inappbrowser
- SpringCloud配置中心高可用搭建
- hadoop压缩与解压
- cordova插件- Media
- JDK8之新特性扩展篇
- Java管理Cookie增删改查操作。
- Intellij Idea乱码解决方案都在这里了
- 神奇,教你用随机数打印hello world
- Mapreduce任务实现邮件监控
- Eclipse中Maven打包程序并在Linux中运行
- SDN开发笔记(七):L2switch源码分析(上)
- spark使用zipWithIndex和zipWithUniqueId为rdd中每条数据添加索引数据
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 干货分享 | K8s 、Docker 常用命令汇总
- 干货 | YOLOV5 训练自动驾驶数据集,并转Tensorrt,收藏!
- Vue中watch的简单应用
- Go 使用标准库 net/rpc 包
- 强大的 Stream API(三)
- 微软发布代码智能新基准数据集CodeXGLUE,多角度衡量模型优劣
- 强大的 Stream API(二)
- 无限想象空间,用Python玩转3D人体姿态估计
- 300亿美元,AMD为什么要买Xilinx?
- Angular5.0.0新特性
- 用Python实现坦克大战游戏 | 干货贴
- android studio 3.0 升级 项目遇到的问题及更改思路(问题小结)
- Android Studio 3.0被调方法参数名提示的取消方法
- Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
- 解决python多线程报错:AttributeError: Can't pickle local object问题