【Java笔记】1-JDK/JRE/JVM是个啥?

JDK、JRE、JVM可以说是入门必须了解的三个词汇

先说全称

JDK:Java Development Kit,Java开发工具包

JRE:Java Runtime Environment,Java运行环境

JVM:Java Virtual Machine,Java虚拟机

再说关系

JVM⊆JRE⊆JDK

即 JVM包含于JRE,JRE包含于JDK。为什么呢?放张图,摘自B站up"遇见狂神说"

再说他们具体包含什么

JDK:Java Development Kit,Java开发工具包

JDK包含两个内容:

  • 开发工具(提供开发Java的环境)
  • JRE(Java运行时的环境)

其中,开发工具包括"javac.exe"(把.java变成.class文件)、"java.exe"(解释执行class文件)、jar(归档器)、文档生成器(javadoc)等

另外,Java安装目录下,有以下几个文件夹:

  • bin:最主要的是编译器(javac.exe)
  • include:java和JVM交互用的头文件
  • lib:类库
  • jre:java运行环境
JRE:Java Runtime Environment,Java运行环境

JRE是一个安装包,提供了Java运行的环境,可以在机器上运行(而不是开发)Java程序。

即,只参与运行,不参与开发!如果你用JDK开发完了把(编译好的)Java程序扔给我,那我如果只有JRE,可以运行,但没有办法编译。

所以,如果有JDK的开发工具,可以把代码进行编译;有JDK的JRE,可以把代码运行

具体而言,JRE除了JVM,其实还包含部署技术、用户界面工具包、集成库、其他基础库、Lang和Util基础库等

JVM:Java Virtual Machine,Java虚拟机

JVM在Java程序运行时成为JRE的一个实例?(呃,竟然是类和实例的关系吗)

负责三项内容:

  • Loading 加载
  • Linking 链接
  • Initialization 初始化

JVM在执行.class文件时,把其解释成具体平台上的机器指令执行,这就是Java"一次编译,到处运行"的原因。

个人感觉,为了这句话,把代码到机器指令的过程切分,第一个过程尽量接近机器语言,第二个过程根据不同的机器进行特异性解释,以便运行

另外:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar(这里还不太清楚,后续慢慢了解,留坑)

参考:

https://www.geeksforgeeks.org/differences-jdk-jre-jvm/

https://www.bilibili.com/video/BV12J41137hu

相关推荐
Cosmoshhhyyy11 分钟前
《Effective Java》解读第5条:优先考虑依赖注入来引用资源
java
.柒宇.1 小时前
力扣hot100----15.三数之和(java版)
java·数据结构·算法·leetcode
程序员卷卷狗2 小时前
JVM 调优实战:从线上问题复盘到精细化内存治理
java·开发语言·jvm
cj6341181502 小时前
【MySQL】mysqldump使用方法
java·后端
JIngJaneIL2 小时前
停车场管理|停车预约管理|基于Springboot的停车场管理系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·停车场管理系统
杰克尼3 小时前
二分查找为什么总是写错
java·数据结构·算法
蒙奇D索大4 小时前
【计算机网络】408考研核心考点:物理层设备(中继器/集线器)深入解析
经验分享·笔记·计算机网络·考研·改行学it
半旧夜夏5 小时前
【分布式缓存】Redis持久化和集群部署攻略
java·运维·redis·分布式·缓存
短视频矩阵源码定制5 小时前
矩阵系统源码推荐:技术架构与功能完备性深度解析
java·人工智能·矩阵·架构
Eiceblue5 小时前
使用 Java 将 Excel 工作表转换为 CSV 格式
java·intellij-idea·excel·myeclipse