JDK, JRE和JVM之间的区别和联系

JDK, JRE和JVM是与Java编程语言相关的三个重要的概念,它们分别代表Java Development Kit(Java开发工具包)、Java Runtime Environment(Java运行时环境)和Java虚拟机(Java Virtual Machine)。它们在Java开发和执行过程中扮演着不同的角色,下面我会详细解释它们之间的区别和联系:
区别
- JDK(Java Development Kit):
JDK是Java开发工具包,它是Java开发者用于编写、编译、调试和运行Java程序的核心组件。JDK包含了Java编程语言的开发工具和工具集,以及Java标准库和其他一些必要的文件。JDK中的主要组件包括:
- 编译器(javac):用于将Java源代码编译成Java字节码文件(.class文件)。
- JRE(Java Runtime Environment):Java运行时环境,用于运行Java程序。
- Java标准库:一组Java类和API,提供了各种功能,如输入输出、网络通信、集合等。
- 开发工具:如调试器(jdb)、打包工具(jar)等,用于开发和调试Java程序。
- JRE(Java Runtime Environment):
JRE是Java运行时环境,它是在计算机上运行Java程序所必需的最小环境。JRE包含了Java虚拟机(JVM)和Java标准库(Java API)。当你想要运行已编译的Java程序时,只需要安装JRE即可。JRE的主要组件包括:
- JVM(Java Virtual Machine):Java虚拟机,负责解释和执行Java字节码文件。
- Java标准库:一组Java类和API,用于在Java程序中使用各种功能。
- JVM(Java Virtual Machine):
JVM是Java虚拟机,是Java程序运行的核心组件。它是Java的关键特性之一,允许Java程序在不同的平台上独立运行,实现了Java的"一次编写,到处运行"的理念。JVM负责解释和执行Java字节码,将字节码翻译成特定操作系统能够理解的机器码。每个Java程序都在JVM中运行,而不依赖于底层操作系统。这样一来,只需要编写一次Java程序,就可以在任何支持Java的平台上运行。
联系
- JDK包含了JRE,JRE包含了JVM。因此,安装JDK会自动包含JRE,并且可以在JDK中找到JRE的相关文件。
- JDK用于开发Java程序,它包含了编译器和其他开发工具,而JRE只用于运行Java程序,不包含开发工具。
- JVM是JRE的一部分,用于解释和执行Java字节码,使得Java程序可以在不同的操作系统上运行。
曲意解释
注意一下,pom(Project Object Model)文件中的包(或者依赖)与JDK(Java Development Kit)不是同一个概念,它们代表了不同的内容。

-
pom文件中的包:
在Java项目中,pom文件是Maven项目管理工具使用的一种XML文件,用于描述项目的结构、依赖关系和构建设置等。pom文件包含了项目的元信息以及与项目构建和依赖管理相关的配置。在pom文件中,你可以指定项目的依赖项,这些依赖项是项目所需的外部库或组件,Maven会自动下载并集成这些依赖项到项目中。 -
JDK(Java Development Kit):
JDK是Java开发工具包,它是Java开发者用于编写、编译、调试和运行Java程序的核心组件。JDK包含了Java编程语言的开发工具和工具集,以及Java标准库和其他一些必要的文件。它提供了javac编译器和Java虚拟机(JVM)等工具,使得开发者可以创建和运行Java程序。
所以啊,pom文件中的包是指项目的依赖项,而JDK是Java开发工具包,两者是不同的概念。pom文件中的包用于管理项目的依赖,JDK则是提供Java开发工具和运行环境的软件包。
总结
如果我们要开发Java程序,我们需要安装JDK,因为JDK包含了编译器(javac)和其他开发工具,使得我们能够编写和编译Java源代码。JDK也包含了JRE,所以在安装JDK时,同时也具备了运行Java程序的能力。
然而,如果我们只想运行已经编译好的Java字节码文件(.class文件),而不涉及Java代码的编译过程,那么只需要安装JRE即可。JRE包含了JVM(Java虚拟机)和Java标准库,它提供了在计算机上运行Java程序所需的最小环境。
JVM在执行Java字节码时,会将字节码解释为特定操作系统能够理解的机器指令。由于不同操作系统的机器指令是不同的,因此在安装JDK时,我们需要选择与我们操作系统匹配的版本,以确保JVM能够正确地执行Java程序。
一句话:
- JDK用于开发Java程序,包含了编译器和其他开发工具,适用于编写和编译Java源代码。
- JRE用于运行Java程序,包含了JVM和Java标准库,适用于运行已编译的Java字节码文件。
- JVM是Java虚拟机,用于执行Java字节码,确保Java程序在不同操作系统上具有跨平台性。安装JDK时需要选择适合操作系统的版本。
相关文章:
JDK, JRE和JVM之间的区别和联系
JDK, JRE和JVM是与Java编程语言相关的三个重要的概念,它们分别代表Java Development Kit(Java开发工具包)、Java Runtime Environment(Java运行时环境)和Java虚拟机(Java Virtual Machine)。它们…...
mac电脑访问windows共享文件夹连接不上(设置445端口)
前提:首先需要保证mac和windows都在同一局域网内,如果不在肯定是连不上的,就不用往下看了。 事情是这样的,公司入职发了mac电脑,但是我是window重度用户,在折腾mac的过程中,有许多文件需要从wi…...
metersphere性能压测执行过程
(1) 首先在controller层,通过RunTestPlanRequest接收请求参数 PostMapping("/run")public String run(RequestBody RunTestPlanRequest request) (2) 在PerformanceTestService中的run中进行具体的逻辑处理, 首先根据请求中ID来获取库中存储…...
揭秘Word高级技巧:事半功倍的文字处理策略
Microsoft Word是一款广泛使用的文字处理软件,几乎每个人都有使用过它的经历。但是,你是否知道Word中隐藏着许多高级技巧和功能,可以帮助你事半功倍地处理文字?在本文中,我们将揭秘一些Word的高级技巧,让你…...
06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框
在一个完整的应用程序设计中,不可避免地会涉及多个窗体、对话框的设计和调用,如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题,主要包括以下几点。 Qt 提供的…...
模拟实现消息队列项目(系列7) -- 实现BrokerServer
目录 前言 1. 创建BrokerServer类 1.1 启动服务器 1.2 停止服务器 1.3 处理一个客户端的连接 1.3.1 解析请求得到Request对象 1.3.2 根据请求计算响应 1.3.3 将响应写回给客户端 1.3.4 遍历Session的哈希表,把断开的Socket对象的键值对进行删除 2. 处理订阅消息请求详解(补充) …...
vscode插件不能搜索安装
1 现象 vscode搜索自己的插件,报错: Error while fetching extensions. HXR failed2 原因 之前用vscode开发golang语言,设置了proxy代理,所以导致错误,删除即可 重启vscode 3 结果...
路由器工作原理(第二十九课)
路由器工作原理(第二十九课) 一图胜过千言 1) 路由:数据从一个网络到另外一个网络之间转发数据包的过程称为路由 2) 路由器:连接不同网络,实现不同网段之间的通信 3)路由表:路由器选择数据的传输路径的依据 原始的路由表 Destination/Mask Proto Pre Cost …...
linux log 日志
/* author: hjjdebug * date: 2023年 08月 08日 星期二 13:18:08 CST * descriptor: linux log 日志 * destinator: 搞清linux 下log 日志 * 下面代码编译通过即可运行 */ #include <stdio.h> #include <syslog.h> int main(void) { // 打开系统日志, 可…...
uniapp获取当前页面高度
设置动态高度:style"{height: pageHeightpx}" <view class"uni-content" :style"{height: pageHeightpx}" >... </view>获取当前页面高度: onLoad() {// 获取当前窗口高度this.pageHeight uni.getSystemInfoSync().wi…...
Java课题笔记~ Spring 集成 MyBatis
Spring 集成 MyBatis 将 MyBatis 与 Spring 进行整合,主要解决的问题就是将 SqlSessionFactory 对象交由 Spring 来管理。所以该整合,只需要将 SqlSessionFactory 的对象生成器SqlSessionFactoryBean 注册在 Spring 容器中,再将其注入给 Dao…...
分布式系统理论基础
文章目录 介绍目标 正文CAPConsistencyAvailabilityPartition tolerance BASEBasically AvailableSoft StateEventually Consistent ACIDatomicityconsistencyisolationdurability 参考文档 介绍 分布式系统面临的场景往往是众口难调,“这也要,那也要”…...
mfc 编辑框限制
DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实现。 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与变量之间值的传递。 当然你也可以不使用DoDataExchange而完成控件与变量之间值…...
web基础与tomcat环境部署
一. 简述静态网页和动态网页的区别。 请求响应信息,发给客户端进行处理,由浏览器进行解析,显示的页面称为静态页面。处理文件类型如.html、jpg、.gif、.mp4、.swf、.avi、.wmv、.flv等 请求响应信息,发给事务端进行处理࿰…...
Go 变量
在Go中,有不同的变量类型,例如: int 存储整数(整数),例如123或-123float32 存储浮点数字,带小数,例如19.99或-19.99string - 存储文本,例如“ Hello World”。字符串值用…...
【雷达通信】非相干多视处理(CSA)(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
73. 矩阵置零
题目链接:力扣 解题思路: 方法一:比较容易想到的方向,使用两个数组row和col保存有0的行或者列,然后将有0的那一行或那一列的所有元素都设置为0 AC代码 class Solution {public void setZeroes(int[][] matrix) {in…...
‘大数据技术与应用’和‘数据科学与大数据技术’有什么区别
一、侧重点不同 ‘大数据技术与应用’主要侧重于大数据的存储、处理和分析技术、包括数据挖掘、机器学习、数据仓库、分布式计算等方面的研究,旨在开发大数据相关的应用程序和系统,以满足商业和企业的需求。 ‘数据科学与大数据技术’则更加注重数据本…...
没有jsoup,rust怎么解析html呢?
在 Rust 中,你可以使用各种库来解析网页内容。一个常用的库是 reqwest ,它提供了一个简单的方式来发送 HTTP 请求并获取网页内容。另外,你可以使用 scraper 或 select 等库来解析 HTML 或 XML 格式的网页内容。 下面是一个使用 reqwest 和 sc…...
【C高级】Day4 shell脚本 排序
1. 整理思维导图 2. 写一个函数,获取用户的uid和gid并使用变量接收 #!/bin/bash function getid() {uidid -ugidid -g }getid echo "uid$uid" echo "gid$gid"3. 整理冒泡排序、选择排序和快速排序的代码 #include <myhead.h>void Inp…...
xclabel是一款开源图像标注与模型训练工具,采用Python+Flask开发,跨平台支持Windows/Linux/Mac
xclabel 作者:北小菜作者主页:https://www.yuturuishi.comgitee开源地址:https://gitee.com/Vanishi/xclabelgithub开源地址:https://github.com/beixiaocai/xclabel 软件介绍 xclabel是一款开源图像标注与模型训练工具&#x…...
视频孪生融合落地,无感定位完胜 UWB 静态定位模式
视频孪生融合落地,无感定位完胜 UWB 静态定位模式数字孪生产业加速向实景化、动态化、实景融合方向纵深发展,视频孪生凭借实景画面与虚拟模型共生联动的特性,成为实体场景数字化治理的核心载体。空间定位作为视频孪生的数据根基,直…...
AI 自动剪辑不是‘一键成片’:90% 的技术团队踩在逻辑断层与工程适配陷阱里
当团队首次将「AI 自动剪辑」纳入短视频生产管线时,最典型的误判是把它当作一个黑盒触发器:导入原始素材 → 点击「智能剪辑」→ 导出成品。这种认知忽略了背后三重断裂——语音转写与气口检测的精度断层、镜头语义理解与叙事逻辑的错位、以及单机操作与…...
2026年如何向 GPT-5.5 提问,拿到更高质量的技术解释和方案
摘要: 2026年的工具生态正在从“追大模型”转向“讲效率、讲成本、讲合规”。本文结合当前小模型高效化、国产工具崛起、多模型聚合的趋势,分享一套面向 GPT-5.5 的高质量提问方法,帮助开发者和普通用户更快拿到清晰、可执行、可落地的技术答…...
第37天:SQL详解之DDL
Python学习100天(从入门到精通系列文章) 文章目录 Python学习100天(从入门到精通系列文章) 前言 一、SQL概述 1.1 建库建表 1.2 DDL关键注意事项 二、存储引擎对比 三、数据类型选择 四、删除表和修改表 4.1 删除表 4.2 修改表 总结 前言 在前一篇文章中,我们了解了关系型…...
如何快速掌握CircuitJS1桌面版的3个核心秘诀
如何快速掌握CircuitJS1桌面版的3个核心秘诀 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1 CircuitJS1 Desktop …...
RAG+Agent+记忆图谱三重架构解析,2026年仅剩这4个工具通过企业级安全审计认证
更多请点击: https://codechina.net 第一章:RAGAgent记忆图谱三重架构解析,2026年仅剩这4个工具通过企业级安全审计认证 架构协同的本质逻辑 RAG 提供实时、可溯源的外部知识注入能力;Agent 负责任务分解、工具调用与多步推理闭…...
从‘能看’到‘好看’:用Seaborn调色板为你的热力图注入专业感
从‘能看’到‘好看’:用Seaborn调色板为你的热力图注入专业感 在数据驱动的决策时代,可视化不仅是展示数字的工具,更是讲述数据故事的视觉语言。当你的热力图从"能看"升级为"好看",数据洞察的传递效率可能提…...
中小型企业构建内部AI助手时如何通过Taotoken实现成本与权限的双重管控
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 中小型企业构建内部AI助手时如何通过Taotoken实现成本与权限的双重管控 应用场景类,企业部署内部AI助手需考虑成本与安…...
PowerToys中文汉化:让Windows效率工具真正为你所用
PowerToys中文汉化:让Windows效率工具真正为你所用 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 你是否曾经面对微软PowerToys的强大功能却…...
