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

图解Java运行机制-JVM、JRE、JDK区别

以下是Java运行机制及JVM、JRE、JDK区别的图解与说明:

 

---

 

### 一、Java程序运行机制

1. **编写与编译**  

   Java源文件(`.java`)通过**JDK中的编译器(javac)**编译为字节码文件(`.class`),字节码是一种与平台无关的中间代码。  

2. **执行流程**  

   字节码文件由**JVM(Java虚拟机)**解释执行,JVM将字节码转换为具体操作系统的机器指令,从而实现“一次编译,到处运行”。

 

---

 

### 二、核心组件详解

#### 1. JVM(Java Virtual Machine)

- **功能**:  

  负责加载字节码文件,管理内存、垃圾回收、安全机制等,是Java跨平台的核心。不同操作系统需安装对应的JVM实现。

- **特点**:  

  - 平台相关(如Windows和Linux需不同JVM)。  

  - 仅关注`.class`文件,不参与源码开发。

 

#### 2. JRE(Java Runtime Environment)

- **功能**:  

  包含**JVM + 核心类库(如`java.lang`、`java.util`)**,提供运行Java程序的基础环境。  

- **适用场景**:  

  普通用户运行Java程序(如客户端应用、浏览器Applet)时安装JRE即可。

 

#### 3. JDK(Java Development Kit)

- **功能**:  

  包含**JRE + 开发工具**(如编译器`javac`、调试器`jdb`、文档生成工具`javadoc`)。  

- **适用场景**:  

  Java开发者需安装JDK以编写、编译和调试代码。

 

---

 

### 三、三者关系图解

```

JDK(开发工具包)

├── JRE(运行环境)

│ ├── JVM(虚拟机)

│ └── 核心类库(如rt.jar)

└── 开发工具(javac、jdb等)

```

- **层级关系**:JDK > JRE > JVM。  

- **开发与运行分离**:  

  - **开发阶段**:需JDK(含JRE)生成`.class`文件。  

  - **运行阶段**:仅需JRE解释执行字节码。

 

---

 

### 四、区别对比

| **组件** | **核心功能** | **包含内容** | **用户群体** |

|----------|-----------------------------|----------------------------------|--------------------|

| **JVM** | 执行字节码,实现跨平台 | 无独立安装包,内置于JRE | 所有Java程序使用者 |

| **JRE** | 运行Java程序 | JVM + 核心类库 | 普通用户 |

| **JDK** | 开发Java程序 | JRE + 开发工具 | 开发者 |

 

---

 

### 五、跨平台实现原理

Java通过**分层设计**实现跨平台:  

1. 开发者编写与平台无关的Java源码。  

2. 编译器生成统一的字节码(`.class`)。  

3. **JVM根据不同操作系统翻译字节码**,映射为本地指令执行。

 

---

 

### 总结

- **开发环境**:JDK = JRE + 开发工具。  

- **运行环境**:JRE = JVM + 核心类库。  

- **核心机制**:JVM屏蔽底层差异,是跨平台的基石。  

相关文章:

图解Java运行机制-JVM、JRE、JDK区别

以下是Java运行机制及JVM、JRE、JDK区别的图解与说明: --- ### 一、Java程序运行机制 1. **编写与编译** Java源文件(.java)通过**JDK中的编译器(javac)**编译为字节码文件(.class)&#xff…...

UML类图综合实验三补档

1.使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man对象,如果传入参数“W”,则返回一个Woman对象,用Java语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”&#…...

OpenHarmony子系统开发 - DFX(八)

OpenHarmony子系统开发 - DFX(八) 八、Faultlogger开发指导 概述 功能简介 Faultlogger是OpenHarmony为开发者提供的一个维测日志框架,能够为应用、元能力、系统服务进程崩溃故障提供统一检测、日志采集、日志存储、日志上报功能&#xf…...

C# virtual 和 abstract 详解

简介 在 C# 中,virtual 和 abstract 关键字都用于面向对象编程中的继承和多态,它们主要用于方法、属性和事件的定义,但在用法上存在一些重要的区别。 virtual 关键字 virtual 表示可重写的方法,但可以提供默认实现,…...

红宝书第三十二讲:零基础学会模块打包器:Webpack、Parcel、Rollup

红宝书第三十二讲:零基础学会模块打包器:Webpack、Parcel、Rollup 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、模块打包器是什么? 把分散的HTML/CSS/JS文件 组合成浏览…...

DeepSeek 在金融领域的应用解决方案

DeepSeek 在金融领域的应用解决方案 一、背景 随着人工智能技术的快速发展,DeepSeek 作为一款国产大模型,凭借其强大的语义理解、逻辑推理和多模态处理能力,在金融行业迅速崭露头角。金融行业作为经济的核心,面临着激烈的市场竞…...

linux 处理2个文件的差集

命令 grep -Fvxf 文件1 文件2 -F 将模式视为固定字符串,而非正则表达式。 -v 反向匹配,输出不匹配的行。 -x 精确匹配整行,避免部分匹配。 -f 文件1 从文件1中读取模式。 示例 执行命令 grep -Fvxf a1.txt a2.txt...

vue3中pinia基本使用

一、安装以及引入 安装:npm install piniamain.js文件: import { createApp } from "vue"; import { createPinia } from "pinia"; import App from "./App.vue";const pinia createPinia() const app createApp(App)…...

“乐企“平台如何重构业财税票全流程生态?

2025年,国家税务总局持续推进的"便民办税春风行动"再次推进数字化服务升级,其中"乐企"平台作为税务信息化的重要载体,持续优化数电票服务能力,为企业提供更高效、更规范的税务管理支持。在这一背景下&#xf…...

JVM内存模型

JVM内存模型 JVM(Java Virtual Machine)内存模型是 Java 程序在运行时,JVM 为其分配的内存结构,它定义了 Java 程序如何在内存中存储数据和如何进行线程之间的通信。JVM 内存模型是为了支持高效的多线程执行和垃圾回收机制。 一…...

LeetCode热题100记录-【二分查找】

二分查找 35.搜索插入位置 思考&#xff1a;二分查找先判定边界条件 记录&#xff1a;不需要二刷 class Solution {public int searchInsert(int[] nums, int target) {int left 0,right nums.length-1;if(nums[right] < target){return right1;}if(nums[left] > tar…...

科普:原始数据是特征向量么?

一、输入向量 x \mathbf{x} x是特征向量 机器学习算法公式中的输入向量 x \mathbf{x} x通常要求是特征向量。原因如下&#xff1a; 从算法原理角度&#xff1a;机器学习算法旨在通过对输入数据的学习来建立模型&#xff0c;以实现对未知数据的预测或分类等任务。特征向量是对…...

echarts地图添加涟漪波纹点位

1.完整代码 chartsOption: {tooltip: {trigger: "item",formatter: this.initTooltip,triggerOn: "mousemove",borderColor: "#fff",backgroundColor: "rgba(216, 227, 244, 1)",extraCssText: "border-radius: 14px;", //…...

Linux(十三)fork + exec进程创建

一、进程创建 在了解进程创建的步骤前&#xff0c;让我们先通过实例观察一下。大家可以跟小编一起&#xff0c;在终端中执行3次ps -f命令&#xff0c;观察一下。 通过上图&#xff0c;我们可以发现&#xff0c;3次ps -f的父进程&#xff08;PPID&#xff09;都是一样的&#xf…...

集合计算高级函数

说明 过滤 遍历一个集合并从中获取满足指定条件的元素组成一个新的集合转化/映射&#xff08;map&#xff09;将集合中的每一个元素映射到某一个函数扁平化 扁平化映射 注&#xff1a;flatMap 相当于先进行 map 操作&#xff0c;在进行 flatten 操作集合中的每个元素的子元素映…...

鼎讯信通 便携式雷达信号干扰模拟器:打造实战化电磁环境的新利器

在现代战争中&#xff0c;电磁环境的复杂性直接影响着雷达装备的性能和作战效果。面对敌方日益精进的电子战手段&#xff0c;如何提升雷达设备的抗干扰能力&#xff0c;确保其在实战环境中的稳定性和可靠性&#xff0c;已成为各国军队和科研机构的重要课题。 为此&#xff0c;…...

避开养生误区,拥抱健康生活

在追求健康的道路上&#xff0c;我们常常会陷入一些养生误区&#xff0c;不仅无法达到预期效果&#xff0c;还可能损害身体健康。只有拨云见日&#xff0c;认清这些误区&#xff0c;采取正确的养生方式&#xff0c;才能真正拥抱健康生活。​ 很多人认为&#xff0c;保健品吃得…...

解码ChatBI技术形态:独立对话框、插件式与IM集成模式的技术优劣

ChatBI的形态之争 随着大语言模型&#xff08;LLM&#xff09;技术的成熟&#xff0c;**对话式商业智能&#xff08;ChatBI&#xff09;**正成为企业数据分析的新范式。然而&#xff0c;不同的技术形态直接影响ChatBI的落地效果——独立对话框、插件式助手、IM集成机器人&…...

rockylinux 8 9 升级到指定版本

rockylinux 8 update 指定版本 rockylinux 历史版 所有版本rockylinux 最新版 所有版本vault历史版 pub最新版(https://dl.rockylinux.org)地址后面增加不同名称 echo "delete repos" rm -rf /etc/yum.repos.d/*echo "new rockylinux repo" cat <<EO…...

一文详解OpenCV环境搭建:Ubuntu20.4使用CLion配置OpenCV开发环境

在计算机视觉和图像处理领域&#xff0c;OpenCV 是一个不可或缺的工具。其为开发者提供了一系列广泛的算法和实用工具&#xff0c;支持多种编程语言&#xff0c;并且可以在多个平台上运行。对于希望在其项目中集成先进视觉功能的开发者来说&#xff0c;掌握如何配置和使用OpenC…...

Android Coli 3 ImageView load two suit Bitmap thumb and formal,Kotlin(四)

Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;四&#xff09; 对 Android Coli 3 ImageView load two suit Bitmap thumb and formal&#xff0c;Kotlin&#xff08;三&#xff09;-CSDN博客 进行完善&#xff0c;注意完善 …...

01-JVM 内存模型与 GC 原理

JVM 内存模型与 GC 原理解析 本文将从 JVM 内存模型入手&#xff0c;深入剖析各个区域的作用、GC 的运行机制与常见算法&#xff0c;并结合源码与面试思维&#xff0c;带你掌握 JVM 的底层世界。 一、JVM 内存模型&#xff08;Java Memory Model&#xff09; JVM 将内存划分为…...

Docker--Docker镜像制作的注意事项

Docker 镜像制作 dockerfiles的指令讲解 链接 CMD和ENTRYPOINT CMD 和 ENTRYPOINT 是 Dockerfile 中用于指定容器启动时运行命令的两个指令。它们在功能上有一些相似之处&#xff0c;但也存在重要区别。 在编辑Dockerfile时&#xff0c;ENTRYPOINT或者CMD命令会自动覆盖之前…...

AI:支持向量机(SVM)

支持向量机(SVM)理论基础详解:从零开始的完全指南 一、SVM的核心思想:直观理解 1.1 什么是分类问题? 想象你在玩一个游戏:桌上有红色和蓝色的球,你需要画一条线把它们分开。这条线就是分类边界。SVM的目标是找到一条最优分界线,使得这条线到最近的红色球和蓝色球的距…...

Vue.js 中 v-if 的使用及其原理

在 Vue.js 的开发过程中&#xff0c;条件渲染是一项极为常见的需求。v-if指令作为 Vue.js 实现条件渲染的关键手段&#xff0c;能够根据表达式的真假来决定是否渲染某一块 DOM 元素。它在优化页面展示逻辑、提升用户体验等方面发挥着重要作用。接下来&#xff0c;我们就深入探讨…...

Vue.js 中 v-show 的使用及其原理

在 Vue.js 的开发过程中&#xff0c;我们常常需要根据不同的条件来控制页面元素的显示与隐藏。v-show指令作为 Vue.js 提供的重要工具之一&#xff0c;为我们实现这一功能提供了便捷的途径。它与v-if指令有些相似&#xff0c;但在使用方法和原理上存在着明显的区别。接下来&…...

docker安装redisSearch

1.背景 Redis Search 是 Redis 官方提供的全文搜索引擎,它为Redis 提供全文搜索、索引和复杂查询功能。它基于内存存储&#xff0c;结合了 Redis 的高性能和倒排索引技术&#xff0c;支持实时搜索、聚合分析、模糊匹配等场景。RedisSearch 适用于需要快速检索结构化或非结构化…...

ADI的BF561双核DSP怎么做开发,我来说一说(六)IDE硬盘设计

作者的话 ADI的双核DSP&#xff0c;最早的一颗是Blackfin系列的BF561&#xff0c;这颗DSP我用了很久&#xff0c;比较熟悉&#xff0c;且写过一些给新手的教程。 是的你没有看错&#xff0c;就是IDE&#xff0c;那个最老的硬盘&#xff0c;我们当年做过此类设计。 硬件准备 …...

5.数据结构-图

5.数据结构-图 5.1 图的定义和基本术语5.1.1 图的定义5.1.2 图的基本术语 5.2图的存储结构5.2.1邻接矩阵采用邻接矩阵表示法创建无向网邻接表 5.1 图的定义和基本术语 5.1.1 图的定义 图 G由两个集合V和E组成&#xff0c;记为 G ( V , E ) G(V,E) G(V,E)&#xff0c;其中V是…...

uni-app使用web-view传参的坑

问题描述 uni-app开发的一个页面&#xff0c;需要点击时跳转到PC端后台的一个详情页&#xff0c;所以需要传参如下&#xff1a; ticketIdticketCodetoken&#xff08;用于自动登录&#xff0c;校验身份的&#xff09; 但是吧&#xff0c;如果你明文传token&#xff0c;容易导…...

Android studio打包uniapp插件

一.参考资料与环境准备 原生工程配置需要使用到Android studio和HbuilderX 当前测试的as版本-20240301,下载地址&#xff1a;HbuilderX版本&#xff1a;4.36 二.插件创建流程 1.导入下载的UniPlugin-Hello-AS工程&#xff08;下载地址见参考资料&#xff09; 2.生成jks证书…...

SVT-AV1学习-函数selfguided_restoration_fast_internal

一 selfguided_restoration_fast_internal 函数作用 selfguided_restoration_fast_internal是SVT-AV1 编码器中用于自引导恢复Guided Resration SGR 的一个内部函数&#xff0c;通过自引导滤波技术对输入的去燥他图像数据进行处理&#xff0c;生成一个去燥版本的图像&#xff0…...

双引擎驱动:解密音视频体验的QoS技术底座与QoE感官革命

QoS 定义&#xff1a;QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;衡量音视频传输技术层面的性能表现&#xff0c;聚焦网络传输和系统处理能力&#xff0c;通过客观指标量化服务质量。核心指标 码率/带宽&#xff1a;数据传输速率上限&#xff0c;直接…...

element-plus选择菜单栏不变色

代码&#xff1a; <template> ... <el-menu-item index"/task/execute"><el-icon><IconMenu /></el-icon><span>验收任务</span> </el-menu-item> <el-menu-item index"/task/change"><el-icon…...

uniapp加载json动画

一、添加canvas画布 <canvas id"lottie_demo" type"2d" style"display: inline-block;width: 148rpx; height: 148rpx;" /> 二、引入依赖和JSON文件 安装依赖 npm install lottie-miniprogram --save import lottie from lottie-mini…...

快递物流展同期举办2025中国智慧物流核心零部件创新论坛

2025中国智慧物流核心零部件创新论坛 会议主题&#xff1a;“AI ”重构智慧物流核心技术生态 会议介绍 随着人工智能、物联网、5G等技术的快速发展&#xff0c;智慧物流已成为全球物流行业转型升级的核心方向。在AI技术的驱动下&#xff0c;物流行业正从传统的“人、车、货”…...

ASP.NET图书馆借阅系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;图书馆借阅系统利用计算机网络实现信息化管理&#xff0c;使图书信息、图书借阅、归还的管理发展和服务水平有显著提升。 本文拟…...

在 Linux 终端中轻松设置 Chromium 的 User-Agent:模拟手机模式与自定义浏览体验

在 Linux 系统中&#xff0c;通过终端灵活控制 Chromium 的行为可以大幅提升工作效率。本文将详细介绍如何通过命令行参数和环境变量自定义 Chromium 的 User-Agent&#xff0c;并结合手机模式模拟&#xff0c;实现更灵活的浏览体验。 为什么需要自定义 User-Agent&#xff1f;…...

实验一 单管共射极放大电路

这篇文章是即兴写的&#xff0c;也不知道对不对&#xff0c;只有代码哦~~(文章结尾有彩蛋哦~~~&#xff09; 表1-1实验数据MATLAB代码&#xff1a; clear all; clc % 参数设置 VCC 12; % 电源电压 (V) RB1 45e3; % 偏置电阻 RB1 (Ohms) RB2 15e3; % 偏置电阻 RB2 (Ohms) R…...

10-python面向对象(上)

10-python面向对象【上】 1.面向对象简介2. 类(class)3. 类的定义4. 参数self4.1 属性和方法4.2 self 1.面向对象简介 Python是一门面向对象的编程语言 所谓面向对象的语言&#xff0c;简单理解就是语言中的所有操作都是通过对象来进行的 面向过程&#xff1a; 面向过程指将我们…...

Java 大视界 -- 基于 Java 的大数据分布式缓存技术在电商高并发场景下的性能优化(181)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Apache Airflow开源程序是一个以编程方式编写、计划和监控工作流程的平台

一、软件介绍 文末提供程序和源码下载 Apache Airflow开源程序是一个以编程方式编写、计划和监控工作流程的平台&#xff0c;当工作流被定义为代码时&#xff0c;它们将变得更加可维护、可版本化、可测试和协作性。使用 Airflow 将工作流创作为任务的有向无环图 &#xff08;D…...

大数据学习(101)-spark的高可用模式

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

数字内容体验驱动用户参与增效

数字体验驱动参与增长 在数字化竞争日益激烈的市场环境中&#xff0c;数字内容体验已成为撬动用户深度参与的核心杠杆。通过个性化推荐算法与跨渠道分发策略的协同作用&#xff0c;企业能够精准匹配用户兴趣点&#xff0c;将碎片化信息转化为连贯的价值链条。数据显示&#xf…...

一文详解OpenGL环境搭建:Ubuntu20.4使用CLion配置OpenGL开发环境

在计算机图形学的广阔领域中,OpenGL作为行业标准的图形库,为开发者提供了强大的工具集来创建从简单的2D图形到复杂的3D世界。然而,对于初学者而言,配置一个合适的开发环境是迈向成功的第一步。本文将详细介绍如何在Ubuntu 20.04.3 LTS操作系统上搭建基于CLion的OpenGL开发环…...

欧拉函数模板

1.欧拉函数模板 - 蓝桥云课 问题描述 这是一道模板题。 首先给出欧拉函数的定义&#xff1a;即 Φ(n) 表示的是小于等于 n 的数中和 n 互质的数的个数。 比如说 Φ(6)2&#xff0c;当 n 是质数的时候&#xff0c;显然有 Φ(n)n−1。 题目大意&#xff1a; 给定 n 个正整数…...

用PointNet++训练自己的数据集(语义分割模型semseg)

&#xff08;1&#xff09;训练部件分割&#xff08;partseg&#xff09;模型和检测自己点云并将结果保存txt&#xff0c;请看博主上两篇文章 &#xff08;2&#xff09;本文背景是将pipe点云上的缺陷和本体检测出来&#xff0c;即1种语义场景&#xff08;pipe&#xff09;&…...

Java反射机制深度解析:方法、实战与底层机制

大家好&#xff0c;我是钢板兽&#xff01; 反射作为Java的特性&#xff0c;它不仅是Spring三大特性Ioc、DI、AOP的基础&#xff0c;而且MyBatis、Jackson序列化、rpc远程调用接口都用到了反射机制。 本文将带你系统性地掌握 Java 反射的使用&#xff0c;通过 JSON 反序列化的…...

查看wifi密码

netsh wlan show profile nameCMCC-Rkt_Wi-Fi5 keyclear CMCC-Rkt_Wi-Fi5是无线网名称...

RPC 发展史

RPC 发展史 RPC&#xff08;Remote Procedure Call&#xff09;即远程过程调用&#xff0c;随着微服务的兴起&#xff0c;每个服务都拥有自己的数据库&#xff0c;负责各自的模块&#xff0c;例如 keystone&#xff08;认证服务&#xff09;负责用户信息、权限认证的内容&…...