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

【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


http://www.kler.cn/a/377961.html

相关文章:

  • Linux高并发服务器开发 第六天(rwx 对于目录和文件的区别 gcc编译器 动态库静态库)
  • 打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”
  • 【数据库】PostgreSQL(持续更新)
  • XGPT用户帮助手册
  • 群落生态学研究进展▌Hmsc包对于群落生态学假说的解读、Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用
  • 蓝桥杯速成教程{三}(adc,i2c,uart)
  • Golang | Leetcode Golang题解之第518题零钱兑换II
  • pgsql数据量大之后可能遇到的问题
  • SpringCloudAlibaba实战入门之OpenFeign高级用法(十)
  • 数据结构-二叉树中的递归
  • [每周一更]-(第121期):模拟面试|微服务架构面试思路解析
  • 虚函数和纯虚函数是 C++ 中实现多态性的关键概念
  • 【算法笔记】位运算算法原理深度剖析
  • 单向函数、单向陷门函数、困难问题
  • PHP的 CSRF、XSS 攻击和防范
  • promise的catch放在then前面的场景
  • OpenGL入门003——使用Factory设计模式简化渲染流程
  • 从零开始的c++之旅——继承
  • SMTP协议,即简单邮件传输协议
  • 20241031 Apache2修改日志里面的时间格式
  • SQL Server 2008 R2 详细安装教程及错误解决教程
  • 数据结构-链表【chapter1】【c语言版】
  • Darknet 连接教程
  • 安全性测试
  • sql server复制一张表(表结构或表数据)SQL语句整理
  • stl_stack/queue