【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.mzph.cn/news/884479.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 报错 first defined here XXXXX multiple definition of XXXX

这个报错是重定义 1、首先检查下是不是真的重定义了,检查下报错提示的函数,以及提示的路径位置 2、头文件被多次包含时,没有设置只包含一次 头文件用宏定义包含,注意宏定义别重复 #ifndef XXX_H #define XXX_H// 函数声明和定…

c语言-进位计数制

文章目录 一、进位计数制是什么?二、c语言1.二进制转十进制2.十进制转二进制 一、进位计数制是什么? 进位计数制简称进制,是人类用于计算数量的基本规则。 可使用数字符号的数目称为基数或底数,基数个数为n个,即可称n…

HTML 基础标签——结构化标签<html>、<head>、<body>

文章目录 1. <html> 标签2. <head> 标签3. <body> 标签4. <div> 标签5. <span> 标签小结 在 HTML 文档中&#xff0c;使用特定的结构标签可以有效地组织和管理网页内容。这些标签不仅有助于浏览器正确解析和渲染页面&#xff0c;还能提高网页的可…

中国计算机学会推荐国际学术会议和期刊目录- 2022

官网只给了PDF文件&#xff0c;我转换成了excel文件&#xff0c;便于筛选和查找。 excel文件&#xff1a;GitHub

【算法赌场】区间合并

区间问题 区间问题的引入 数学上&#xff0c;用两个数字可以确定数轴上的一个区间&#xff0c;较小的数字叫做区间的左端点&#xff0c;也叫区间起点&#xff0c;较大的数字叫做区间的右端点&#xff0c;也叫区间终点。 在算法竞赛中&#xff0c;很多题目是以区间为单位去进行…

给定开始日期时间结束日期时间、间隔得到符合条件的序列pandas.timedelta_range()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 给定开始日期时间 结束日期时间、间隔 得到符合条件的序列 pandas.timedelta_range() [太阳]选择题 以下代码执行后&#xff0c;delta中包含的时间差序列的个数是多少&#xff1f; import pa…

【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南

文章目录 一、工作流编排概述二、FastGPT的节点类型1. 基础功能插件(1) 文本输出(2) 功能调用(3) 工具(4) 外部调用(5) 其他 2. 系统插件3. 团队插件 三、工作流中的流向结语 在当今快速发展的人工智能领域&#xff0c;工作流编排的能力已成为提升用户体验和应用效率的关键因素…

qt QAction详解

1、概述 QAction是Qt框架中的一个抽象类&#xff0c;用于表示用户界面中的一个动作&#xff08;action&#xff09;。这些动作可以绑定到菜单项、工具栏按钮或快捷键上&#xff0c;提供了一种灵活的方式来处理用户交互。QAction不仅包含了动作的名称、图标、提示信息等属性&am…

MRCTF2020:你传你ma呢

文件上传题先判断黑白名单过滤&#xff0c;先传个最简单的木马 这里上传不了php文件&#xff0c;猜测可能是对php文件进行了过滤&#xff0c;将文件改为任意后缀这里改为.abc 还是上传不成功&#xff0c;猜测可能对MIME也做了过滤&#xff0c;将Content-Type更改为image/jpeg再…

CSS中的优先级和优先权

层叠的规则:后出现的样式会覆盖前面设置的样式 p {color: red; } ​ p {color: blue; } 比如这段代码生效是颜色是blue. 若是不同选择器之间发生了样式冲突,则描述更为具体的那个选择器具有更高的优先级,比如id选择器 > 类选择器 > 标签选择器这低优先级是无法覆盖高优…

LeetCode (206单链表反转)

目录 题目描述: 代码: 第一种: 第二种: 第三种: 第四种: 第五种: 主函数: ListNode类: 题目描述: 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3…

【WPF】MatrixTransform类

【WPF】MatrixTransform类 主要特性使用场景示例 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;MatrixTransform 类是用于表示一个仿射变换的类&#xff0c;它允许开发者通过一个矩阵来定义一个二维空间中的线性变换。这种变换可以包括平移&…

C# Modbus RTU通讯回顾

涉及技术&#xff1a; 1.使用NMdbus4 库 2.ushort[]转int 记得之前刚学习的时候&#xff0c;是ushort[] → Hex字符串→byte[] → 翻转byte[] →BitConverter.ToInt32()&#xff0c;饶了一大圈&#xff1b;实际上可以直接转&#xff1b;这里也有小细节&#xff1a;使用BitCo…

vue2中的v-bind相当于原生js的什么

在 Vue 2 中&#xff0c;v-bind 是一个指令&#xff0c;用于动态地将一个或多个属性绑定到 DOM 元素上。它相当于在原生 JavaScript 中直接操作 DOM 元素属性的方法。 v-bind 的基本用法 在 Vue 中&#xff0c;v-bind 可以这样使用&#xff1a; <!-- 绑定一个属性 -->…

RHCE6

一、DNS域名解析服务器 DNS &#xff08; Domain Name System &#xff09;是互联网上的一项服务&#xff0c;它作为将域名和 IP 地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。DNS 系统使用的是网络的查询&#xff0c;那么自然需要有监听的 port 。…

python 读取文件的内容

在Python中&#xff0c;读取文件内容是一个基础且常见的操作。以下是一些常用的方法来读取文件内容&#xff1a; 使用内建的open()函数和read()方法 # 打开文件 with open(example.txt, r) as file:# 读取文件内容content file.read() # 打印文件内容 print(content)这里使用…

uni-app 下拉刷新、 上拉触底(列表信息)、 上滑加载(短视频) 一键搞定

一、下拉刷新 1. 首先找到pages.json中 给需要进行下拉刷新的页面设置可以下拉刷新 2. 然后在需要实现下拉刷新的script标签内添加 导入onPullDownRefresh import {onPullDownRefresh} from dcloudio/uni-app 下拉刷新触发的事件 onPullDownRefresh(()> {console.log(正…

Java 中 HashMap集合使用

目录 一. HashMap概述 二. HashMap特点 三. HashMap构造方法 四. HashMap的常用方法 五. 使用注意事项 六. 代码示例 一. HashMap概述 HashMap 是 Java 中的一个非常重要的类&#xff0c;它实现了 Map 接口&#xff0c;用于存储键值对&#xff08;key-value pairs&#…

【架构艺术】服务架构稳定性的基础保障

一个产品随着不断研发&#xff0c;其服务架构的复杂度会越来越高。随着产品的用户体量变大&#xff0c;为了保证产品能够长线运营&#xff0c;就需要保证整个服务架构的稳定性。因此&#xff0c;今天这篇文章&#xff0c;就从实操的角度&#xff0c;粗浅讨论一下&#xff0c;服…

QML旋转选择器组件Tumbler

1. 介绍 Tumbler是一个用于创建旋转选择器的组件。它提供了一种直观的方式来让用户从一组选项中进行选择&#xff0c;类似于转盘式数字密码锁。网上找的类似网图如下&#xff1a; 在QML里&#xff0c;这种组件一共有两个版本&#xff0c;分别在QtQuick.Extras 1.4(旧)和QtQuic…