【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

相关推荐
zjw_rp3 分钟前
Spring-AOP
java·后端·spring·spring-aop
Oneforlove_twoforjob16 分钟前
【Java基础面试题033】Java泛型的作用是什么?
java·开发语言
向宇it33 分钟前
【从零开始入门unity游戏开发之——C#篇24】C#面向对象继承——万物之父(object)、装箱和拆箱、sealed 密封类
java·开发语言·unity·c#·游戏引擎
小蜗牛慢慢爬行35 分钟前
Hibernate、JPA、Spring DATA JPA、Hibernate 代理和架构
java·架构·hibernate
星河梦瑾1 小时前
SpringBoot相关漏洞学习资料
java·经验分享·spring boot·安全
黄名富1 小时前
Redis 附加功能(二)— 自动过期、流水线与事务及Lua脚本
java·数据库·redis·lua
love静思冥想2 小时前
JMeter 使用详解
java·jmeter
言、雲2 小时前
从tryLock()源码来出发,解析Redisson的重试机制和看门狗机制
java·开发语言·数据库
TT哇2 小时前
【数据结构练习题】链表与LinkedList
java·数据结构·链表
java1234_小锋2 小时前
JVM对象分配内存如何保证线程安全?
jvm