JDK、JRE、JVM区别与联系

JDK、JRE 和 JVM 的区别是什么? JDK、JRE 和 JVM 是 Java 技术栈中的三个核心概念,它们共同支撑了 Java 的“一次编写,到处运行”能力,但各自有不同的角色和功能。JRE 是运行 Java 应用程序的最小环境,包含 JVM 和运行 Java 程序所需的核心类库(如 java.lang、java.util 等)。JVM 是 Java 程序运行的核心环境,负责将编译后的字节码(.class 文件)解释或编译为机器码并执行。JVM 是 Java 程序运行的“引擎”,负责执行字节码,但本身不包含开发或运行所需的工具和库。 阅读详情

关键字:JDK,JRE,JVM
摘要:JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

一、JDK

JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。有这样一个关系,JDK包含JRE,而JRE包 含JVM。

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

(注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的)

总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

二、JRE

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

三、JVM

JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。


四、JDK、JRE、JVM三者的联系与区别

1.三者联系:

JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

2.三者区别:

a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。

 

UEFI开发探索102 – ACPI探究01(UEFI配置表) (请保留-> 作者: 罗冰 https://blog.youkuaiyun.com/luobing4365) ACPI探究01(UEFI配置表)1 大致规划2 UEFI Configuration Table(配置表)3 代码实现 最近有项工作,是修改ACPI表。问题本身并不复杂,但是由于代码需要移植到Option ROM上,遇到不少奇怪的现象。因此,花了不少时间,对ACPI进行研究。 任务是完成了,我的好奇心又被勾起来了。准备发挥“格物致知”的信念,把我认为的ACPI各方面的知识,好好地捋一捋。 1 大 阅读详情

相关推荐

基于MicroPython的ESP32与微信小程序MQTT通信实战

本文详细介绍了基于MicroPython的ESP32与微信小程序通过MQTT协议实现远程控制的完整实战方案。项目利用巴法云作为免费MQTT服务器,提供了从设备端编程、小程序开发到通信调试的全流程指南,帮助开发者快速构建低成本、易上手的物联网应用,如智能开关、传感器监控等。

week9的博客 634

浅谈JDK、JRE、JVM区别与联系

关键字:JDK,JRE,JVM 摘要:JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。 一、JDK JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java R...

ancientear的博客 8万+

从零开始用TS开发babylonjs - 本机环境搭建

babylonjs,初始化本地安装,web3d引擎

han3527638的专栏 794

JVM、JRE、JDK之间的联系与区别

Java开发中JVM、JRE和JDK三者的联系与区别

m0_67392010的博客 3976

ONNC Open Neural Network Compiler 开源神经网络编译器 一个 开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)部署导入ONNX模型

ONNC是一个集合了开源、模块化、可重用编译器算法和工具链的库,专门针对深度学习加速器(DLA)。ONNC从底层开始构建,旨在将ONNX中间表示(IR)翻译成专有DLA代码。其软件架构设计强调可移植性和可重用性,从而简化了开发新后端的工作。上图展示了ONNC软件栈的顶层框图。软件栈从导入ONNX计算图模型到输出相应的硬件二进制文件,展示了各个功能块。

万有文的博客 1993

华为OD机试真题 2026-9-2【查找幸运数】

华为OD机试真题 新系统【查找幸运数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【查找幸运数】多语言题解。

qq_45776114的博客 499

弄懂 JRE、JDK、JVM 之间的区别与联系

其实很多 Java 程序员在写了很多代码后,你问他 jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人不知所云。本篇不会讲述 jvm 底层是如何与不同的系统进行交互的,而主要理清楚三者之间的区别,搞清楚我们写的 xxx.java 文件是被谁编译,又被谁执行,为什么能够跨平台运行。 首先,我们分别对这三者进行阐述。 JVM :英文名称(Java Virtual Machine),就...

Walker_YAM 7万+

机器人控制基础:伺服驱动电机 PID 参数自适应控制的实现方法及研究

伺服电机PID参数自适应控制技术研究 摘要:针对伺服驱动电机在动态负载工况下传统PID控制性能下降的问题,本文研究了多种自适应控制方法。通过分析6种主流技术(包括模型参考自适应、模糊逻辑、神经网络等)的原理、实现步骤及适用场景,揭示了负载感知精度、参数调节实时性和系统稳定性三大技术难点,并提出了相应解决方案。以模糊自适应PID为例的实验验证表明,该技术能有效提升伺服系统在变负载条件下的控制性能。研究为工业应用中伺服电机的精确控制提供了重要参考。

start_up_go的博客 828

JDK、JRE 和 JVM 的区别

JDK、JRE 和 JVM 的区别

听海边涛声 908

2026华为OD机试(C语言)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C语言实现。

MISAYAONE的博客 11万+

YOLOv11的流形学习压缩:局部线性嵌入(LLE)引导的特征降维,实现在CSP模块中嵌入流形结构保持约束

摘要 本文探讨了流形学习在YOLOv11目标检测模型中的应用,重点研究局部线性嵌入(LLE)方法对CSP模块的特征压缩优化。针对深度学习模型的高维特征冗余问题,LLE通过三个关键步骤实现非线性降维:寻找k近邻、计算重构权重和低维嵌入,相比传统PCA方法能更好地保持数据的局部结构。文章详细分析了LLE的数学原理和参数选择策略,并提出在YOLOv11的CSP模块中嵌入流形约束的创新设计。通过特征分割前、处理过程和融合阶段引入流形一致性损失函数,该方法能在降低特征维度的同时保持原始流形结构,从而提升模型的计算效率

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1380

JVM, JRE, JDK的区别

Java Development Kit (JDK) 是用于开发 Java 应用程序和小程序的软件开发环境。它包括 Java 运行时环境 (JRE)、解释器/加载器 (Java)、编译器 (javac)、归档器 (jar)、文档生成器 (Javadoc) 以及 Java 开发所需的其他工具。

m0_62146631的博客 1万+

openharmony之启动恢复子系统详解

需求: 添加一个名为my_service的自定义服务步骤1: 创建服务配置],],"env": [步骤2: 添加到主配置],"jobs": ["cmds": [步骤3: 验证配置# ✅ 检查配置格式 jq . /system/etc/init/my_service.cfg # 🔄 重新加载配置 begetctl reload # 📊 验证服务状态 begetctl dump_service my_serviceOpenHarmony init进程的完整生命周期。🔄 三阶段启动模型⚙️ 配置体系。

m0_67505153的博客 601

搞清楚JDK、JRE、JVM的区别

需求:新学java的朋友可能分不清JDK、JRE、JVM的区别,下面详细介绍一下   JDK:Java Development Kit       //Java开发工具包 JRE:Java runtime environment     //Java运行环境 JVM:Java Virtual Machine    //Java虚拟机   使用人群分类:JDK是给开发人员用的...

西瓜的博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Jdk和Jre和JVM的区别

Java虚拟机(Java Virtual Machine, JVM)是Java运行环境的核心组件,它是一种虚拟机,专门用于运行Java字节码。JVM提供了一种独立于操作系统和硬件的运行环境,使得Java程序可以在不同的平台上运行而无需修改。这种“编写一次,到处运行”的特性得益于JVM的设计。Java运行时环境(Java Runtime Environment, JRE)是Java程序运行所需的运行环境。JRE包括JVM和Java类库以及其他支持文件。

Flying_Fish_roe的博客 1036

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JDK、JRE、JVM的联系与区别

JDK、JRE、JVM的联系与区别

weixin_45639224的博客 552

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深入解析 JVM vs JDK vs JRE:三者区别与联系详解

JVM(Java Virtual Machine,Java 虚拟机)是 Java 程序运行的核心,它负责将编译后的字节码(.class文件)翻译成机器代码,并在目标机器上运行。JRE(Java Runtime Environment,Java 运行时环境)是用于运行 Java 程序的环境,它包含 JVM 和运行所需的类库及文件。JDK(Java Development Kit,Java 开发工具包)是用于开发 Java 程序的工具包,包含 JRE 和开发工具(如编译器)。JVM。

李老头探索的博客 1969

jre jdk jvm的区别_JVM,JRE,JDK之间的区别和联系

jdl, jre, jvmJDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class),但是不能编译Java源码JVM:用来解释执行字节码文件(.class),但不能正确的执行什么是JVMJVM是JRE的一部分,是虚拟出来的一台计算机.通过实体计算机仿...

weixin_39590601的博客 103

JRE、JDK、JVM 之间的区别与联系

其实很多 Java 程序员在写了很多代码后,你问他 jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人不知所云。本篇不会讲述 jvm 底层是如何与不同的系统进行交互的,而主要理清楚三者之间的区别,搞清楚我们写的 xxx.java 文件是被谁编译,又被谁执行,为什么能够跨平台运行。 1:首先,我们分别对这三者进行阐述。 JVM:英文名称(Java Virtual Machine)...

jiahanghacker的博客 685

JDK JRE JVM 的区别与联系

JDK JRE JVM 的区别与联系1、JDK2、JRE3、JVM4、总结5、拓展 如下图所示: 1、JDK -JDK(Java SE Development Kit),Java标准开发包 -提供了编译、 运行 Java程序所需的各种工具和资源 -包括Java编译器、Java运行时环境,以及常用的Java类库等。 2、JRE -Java Runtime Environment,Java运行时环境...

weixin_46230625的博客 1405

JVM、JRE、JDK三者的区别

JVM、JRE和JDK三者的区别和联系 JVM:Java Virtual Machine Java虚拟机 1、JVM是一种规范,Oracle实现了这种规范 2、JVM是跨平台的基础 3、一次编译,到处运行 JRE:Java Runtime Environment Java运行时环境 1、JRE中提供了Java运行时需要用到的核心jar(核心开发类,接口等) JDK:Java Development...

zhouym_的博客 485

JDK、JRE、JVM的区别

JDK、JRE、JVM的区别 1.Java开发工具包(JDK)        Java开发工具包是Java环境的核心组件,并提供编译,调试和运行一个Java程序所需的所有工具,可执行文件和二进制文件。JDK是一个平台特定的软件,有针对Windows,Mac和Unix系统不同的安装包,可以说JDK是JRE的超集,它包含了JRE的Java编译器,调试器和核心类,目前JDK的版本号是1.7,也被称为Java7。 JDK有以下三种版本: J2S

weixin_45889920的博客 253

[java]说说 JRE , JDK , JVM 三者之间的区别与联系

在写了很多代码之后,如果问 jre 和 jdk 之间有什么关系, jvm 又是什么,估计有相当一部分人不知道在说什么.所以这篇文章,就尝试解释一下这三者之间的区别和联系,弄清楚为什么 java 能够做到" write once , run anywhere " 基本概念 咱们先来说说, jvm , jre , jdk 都是什么. JVM ( Java Virtual Machine ):就是常说的...

自由而不独立,仍是奴隶。 529

JDK、JRE、JVM是什么?有什么区别?

JDK( Java Development Kit ),Java开发工具包; JRE( Java Runtime Environment ),Java运行环境; JVM( Java Virtual Mechinal ),Java虚拟机。

祁灵劫的博客 2756

jre jdk jvm的区别_弄懂JDK、JRE和JVM到底是什么

首先是JDKJDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。然后我们来看JREJRE(Java Runtime Environment,Java运行环境),包含...

weixin_39621488的博客 90

JVM、JRE、JDK 之间的区别与联系

https://blog.youkuaiyun.com/qq_35326718/article/details/79443911 其实很多 Java 程序员在写了很多代码后,你问他 jre 和 jdk 之间有什么关系,jvm 又是什么东西,很多人不知所云。本篇不会讲述 jvm 底层是如何与不同的系统进行交互的,而主要理清楚三者之间的区别,搞清楚我们写的 xxx.java 文件是被谁编译,又被谁执行,为什么能...

NRGAGA的专栏 233
上一篇: Arrays.toString()的用法
下一篇: IDEA中application.yml不生效
ldj0821
博客等级 码龄5年 7860粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值