Java的JDK、JRE、JVM关系与作用

Java的JDK、JRE、JVM关系与作用

java中的JDK、JRE和JVM是三个核心组件,各自承担不同角色,且存在层级依赖关系

1. JVM(Java Virtual Machine,Java虚拟机)

  • 是什么
    JVM是虚拟的计算机,能够执行编译后的Java字节码(.class文件)。它是Java跨平台能力的核心。
  • 作用
    • 解释或编译字节码为机器码(通过JIT编译器)。
    • 管理内存(如垃圾回收)。
    • 提供运行时环境,隔离底层操作系统差异。
  • 特点
    • 平台相关:不同操作系统需要对应的JVM实现。
    • 无需独立安装:作为JRE的一部分存在。

2. JRE(Java Runtime Environment,Java运行时环境)

  • 是什么
    JRE是运行Java程序的最小环境,包含JVM和基础类库(如java.langjava.util等)。
  • 作用
    • 提供运行Java应用所需的依赖(类库、JVM等)。
    • 用户只需安装JRE即可运行已编译的Java程序。
  • 特点
    • 不包含开发工具(如编译器、调试器)。
    • 通常作为JDK的子集存在,也可单独安装。

3. JDK(Java Development Kit,Java开发工具包)

  • 是什么
    JDK是Java开发的核心工具集,包含JRE及开发工具(如编译器、调试器)。
  • 作用
    • 编译源代码(javac命令生成.class文件)。
    • 打包应用(jar工具)、生成文档(javadoc)、调试(jdb)等。
    • 运行程序(通过内嵌的JRE)。
  • 特点
    • 面向开发者:必须安装JDK才能编写和构建Java程序。
    • 包含JRE:因此无需单独安装JRE即可运行程序。

三者的关系

  1. 层级包含
    JDK ⊃ JRE ⊃ JVM
    • 安装JDK时,会同时安装JRE和开发工具。
    • 安装JRE时,会包含JVM和核心类库。
  2. 协作流程
    • 开发阶段:使用JDK中的javac编译.java文件为.class字节码。
    • 运行阶段:通过JRE中的java命令启动JVM,加载并执行字节码。
  3. 用户场景
    • 开发者:需安装JDK(包含JRE和工具)。
    • 终端用户:只需安装JRE即可运行程序(但现代Java分发通常建议直接安装JDK以获得更新支持)。

图示关系

JDK(开发工具包)
│
├── JRE(运行时环境)
│   │
│   ├── JVM(执行引擎)
│   └── 核心类库(java.lang, java.util等)
│
├── 编译器(javac)
├── 调试器(jdb)
└── 其他工具(jar, javadoc等)

总结

  • JVM:执行字节码的“引擎”,实现跨平台。
  • JRE:运行环境 = JVM + 类库。
  • JDK:开发环境 = JRE + 开发工具。
  • 关系:JDK > JRE > JVM,三者逐级依赖,共同支撑Java的“一次编写,到处运行”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900808.shtml

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

相关文章

C++学习之套接字并发服务器

目录 1.昨天套接字服务器的弊端 2.如何通过多进程方式实现服务器并发 3.多进程服务器-1 4.多进程服务器-2 5.多进程版程序-回收子进程被信号中断的处理 6.多线程版TCP服务处理思路 7.多线程并发服务器编写 8.为什么不能把文件描述符地址传到子线程中 9.多线程程序测试 …

机器学习新范式:Kubernetes + Kubeflow,解锁模型训练与部署的高效密码

一、Kubernetes在机器学习模型训练与部署中的作用 Kubernetes作为一个强大的容器编排平台,为机器学习模型的训练与部署提供了以下核心支持: 分布式训练支持:Kubernetes能够自动化部署和管理PyTorch等机器学习框架的分布式训练任务。通过利用…

动态科技感html导航网站源码

源码介绍 动态科技感html导航网站源码,这个设计完美呈现了科幻电影中的未来科技界面效果,适合展示技术类项目或作为个人作品集的入口页面,自适应手机。 修改卡片中的链接指向你实际的HTML文件可以根据需要调整卡片内容、图标和颜色要添加更…

数字内容智能推荐优化策略

个性化推荐算法构建路径 构建高效数字内容体验的推荐系统,需以多源数据融合为基础框架。首先通过用户画像建模整合人口属性、行为轨迹及兴趣标签,结合协同过滤与深度学习算法建立内容关联矩阵。在此基础上,引入上下文感知机制,动…

# 深度学习中的优化算法详解

深度学习中的优化算法详解 优化算法是深度学习的核心组成部分,用于最小化损失函数以更新神经网络的参数。本文将详细介绍深度学习中常用的优化算法,包括其概念、数学公式、代码示例、实际案例以及图解,帮助读者全面理解优化算法的原理与应用…

汽车的四大工艺

文章目录 冲压工艺核心流程关键技术 焊接工艺核心流程 涂装工艺核心流程 总装工艺核心流程终检与测试静态检查动态检查四轮定位制动转鼓测试淋雨测试总结 简单总结下汽车的四大工艺(从网上找了一张图,感觉挺全面的)。 冲压工艺 将金属板材通过…

Perl 发送邮件

Perl 发送邮件 概述 Perl 是一种强大的编程语言,广泛应用于系统管理、网络编程和数据分析等领域。其中,使用 Perl 发送邮件是一项非常实用的技能。本文将详细介绍使用 Perl 发送邮件的方法,包括必要的配置、代码示例以及注意事项。 准备工…

关于柔性数组

以前确实没关注过这个问题,一直都是直接定义固定长度的数组,尽量减少指针的操作。 柔性数组主要是再结构体里面定义一个长度为0的数组,这里和定义一个指针式存在明显去别的。定义一个指针会占用内存,但是定义一个长度为0的数组不会…

NOIP2011提高组.玛雅游戏

目录 题目算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化思路*详细注释版代码精简注释版代码 题目 185. 玛雅游戏 算法标签: 模拟, 搜索, d f s dfs dfs, 剪枝优化 思路 可行性剪枝 如果某个颜色的格子数量少于 3 3 3一定无解因为要求字典序最小, 因此当一个格子左边有…

go游戏后端开发29:实现游戏内聊天

接下来,我们再来开发一个功能,这个功能相对简单,就是聊天。在游戏里,我们会收到一个聊天请求,我们只需要做一个聊天推送即可。具体来说,就是谁发的消息,就推送给所有人,包括消息内容…

基于大数据的美团外卖数据可视化分析系统

【大数据】基于大数据的美团外卖数据可视化分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统通过对海量外卖数据的深度挖掘与分析,能够为美团外卖平台提供运营决策支…

[ctfshow web入门] web32

前置知识 协议相关博客:https://blog.csdn.net/m0_73353130/article/details/136212770 include:include "filename"这是最常用的方法,除此之外还可以 include url,被包含的文件会被当做代码执行。 data://&#xff1a…

kotlin中const 和val的区别

在 Kotlin 中,const 和 val 都是用来声明常量的,但它们的使用场景和功能有所不同: 1. val: val 用于声明只读变量,也就是不可修改的变量(类似于 Java 中的 final 变量)。它可以是任何类型,包括…

【STM32】综合练习——智能风扇系统

目录 0 前言 1 硬件准备 2 功能介绍 3 前置配置 3.1 时钟配置 3.2 文件配置 4 功能实现 4.1 按键功能 4.2 屏幕功能 4.3 调速功能 4.4 倒计时功能 4.5 摇头功能 4.6 测距待机功能 0 前言 由于时间关系,暂停详细更新,本文章中,…

任务扩展-输入商品原价,折扣并计算促销后的价格

1.在HbuilderX软件中创建项目,把项目的路径放在xampp中的htdocs 2.创建php文件:price.php,price_from.php 3.在浏览器中,运行项目效果,通过xampp中admin进行运行浏览,在后添加文件名称即可,注意&#xff…

3D Gaussian Splatting as MCMC 与gsplat中的应用实现

3D高斯泼溅(3D Gaussian splatting)自2023年提出以后,相关研究paper井喷式增长,尽管出现了许多改进版本,但依旧面临着诸多挑战,例如实现照片级真实感、应对高存储需求,而 “悬浮的高斯核” 问题就是其中之一。浮动高斯核通常由输入图像中的曝光或颜色不一致引发,也可能…

【软件测试】Postman中如何搭建Mock服务

在 Postman 中,Mock 服务是一项非常有用的功能,允许你在没有实际后端服务器的情况下模拟 API 响应。通过创建 Mock 服务,你可以在开发阶段或测试中模拟 API 的行为,帮助团队成员进行前端开发、API 测试和集成测试等工作。 Mock 服…

Spring-MVC

Spring-MVC 1.SpringMVC简介 - SpringMVC概述 SpringMVC是一个基于Spring开发的MVC轻量级框架,Spring3.0后发布的组件,SpringMVC和Spring可以无缝整合,使用DispatcherServlet作为前端控制器,且内部提供了处理器映射器、处理器适…

关于Spring MVC中@RequestParam注解的详细说明,用于在前后端参数名称不一致时实现参数映射。包含代码示例和总结表格

以下是关于Spring MVC中RequestParam注解的详细说明,用于在前后端参数名称不一致时实现参数映射。包含代码示例和总结表格: 1. 核心作用 RequestParam用于显式绑定HTTP请求参数到方法参数,支持以下场景: 参数名不一致&#xff1…

MySQL主从复制技术详解:原理、实现与最佳实践

目录 引言:MySQL主从复制的技术基础 MySQL主从复制的实现机制 复制架构与线程模型 复制连接建立过程 数据变更与传输流程 MySQL不同复制方式的特点与适用场景 异步复制(Asynchronous Replication) 全同步复制(Fully Synch…