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

JDK、JRE、JVM 是什么?有什么关系?【Java】

论如今就业形势:前端学java

目录

  • 简述
  • JVM(Java Virtual Machine)
    • JVM是什么?
    • JVM的作用:
  • JRE(Java Runtime Environment)
    • JRE是什么?
    • JRE的作用:
  • JDK(Java Development Kit)
    • JDK是什么?
    • JDK的作用:
  • Java 程序从源代码到运行的流程(简要)
  • 简单记

简述

JVM 是运行 Java 字节码的虚拟机(运行时引擎);JRE 是运行 Java 程序所需的运行时环境(包含 JVM + 标准类库);JDK 是为开发 Java 程序提供的工具包(包含 JRE + 编译器等开发工具)。

JVM(Java Virtual Machine)

JVM是什么?

JVM是一套虚拟机规范及其实现(通常用 C/C++ 实现),负责执行 .class(Java 字节码)文件。

JVM的作用:

  • 类加载(Class Loader)
  • 字节码验证(Bytecode Verifier)
  • 执行引擎(解释器 + JIT 编译器)
  • 内存管理(堆、栈、方法区/元空间)和垃圾回收(GC)

关键点:JVM 是平台相关的实现(每个平台有对应实现),但执行的字节码是平台无关的 → “一次编译,到处运行”。

JRE(Java Runtime Environment)

JRE是什么?

JRE是运行 Java 程序所需的环境,包含 JVM + Java 标准类库(核心 API) + 其它运行时文件。

JRE的作用:

用途:如果你只是要“运行” Java 程序(不是开发),只需要 JRE 即可。

注意: 在现代发行版里(尤其 OpenJDK 的很多分发),通常直接以 JDK 的形式提供运行时;传统上有单独的 JRE 包,但现在各家策略略有不同(JDK 常带运行时,且可以用 jlink 定制最小运行时镜像)。

JDK(Java Development Kit)

JDK是什么?

JDK是Java 的开发工具包,包含 JRE(因此包含 JVM),并额外提供开发工具:

  • javac(Java 编译器)
  • jar(打包工具)
  • javadoc、jdb、jlink 等工具

JDK的作用:

用途:如果你要写代码、编译、调试或打包,就需要安装 JDK。

Java 程序从源代码到运行的流程(简要)

  1. MyApp.java(源文件)
  2. javac MyApp.java → 生成 MyApp.class(字节码)
  3. java MyApp → 启动 JVM,JVM 加载字节码并执行,JRE 提供标准库支持

简单记

  • JVM → 只是执行引擎,跑字节码
  • JRE → JVM + Java 核心类库(让 JVM 能跑起来)
  • JDK → JRE + 开发工具(编译器 javac、打包工具 jar 等)
┌───────────────────────────────┐
│           JDK                 │
│  ┌─────────────────────────┐  │
│  │          JRE            │  │
│  │  ┌───────────────────┐  │  │
│  │  │       JVM         │  │  │
│  │  └───────────────────┘  │  │
│  └─────────────────────────┘  │
└───────────────────────────────┘

在这里插入图片描述

http://www.dtcms.com/a/389241.html

相关文章:

  • Visual Studio 2022创建CPP项目
  • Nginx反向代理+负载均衡
  • React Suspense底层原理揭秘
  • 关于pycharm高版本导入torch的问题
  • 【硬件研讨】【笔记本电脑】给老ThinkPad升级内存
  • 论文Review 3DGS SuGaR | CVPR 2024 | 3DGS 转 Mesh 开源方案!!
  • Makefile学习(一)- 基础规则
  • 动态代理 设计模式
  • APP小程序被攻击了该如何应对
  • 零基础从头教学Linux(Day 37)
  • ADB 在嵌入式 Linux 系统调试中的应用
  • 7HTMLCSS高级
  • 玩游戏/用设计软件提示d3dcompiler_47.dll缺失怎么修复?5步快速定位问题,高效修复不踩坑
  • HTML应用指南:利用GET请求获取全国宝马授权经销商门店位置信息
  • 《Java网络编程》第一章:基本网络概念
  • Python内存机制全解析:从基础到高级应用
  • Ubuntu24修改ssh端口
  • hadoop实现一个序列化案例
  • DBG数据库加密网关实现mySQL敏感数据动态脱敏与加密全攻略
  • 解决 Vue SPA 刷新导致 404 的问题
  • 大型语言模型 (LLMs) 的演进历程:从架构革命到智能涌现
  • 大语言模型为什么要叫【模型】
  • 教程上新丨ACL机器翻译大赛30个语种摘冠,腾讯Hunyuan-MT-7B支持33种语言翻译
  • 《C++程序设计》笔记
  • NVR接入录像回放平台EasyCVR海康设备视频平台视频监控系统常见故障与排查全解析
  • 半导体制造常提到的Fan-Out晶圆级封装是什么?
  • Qt 系统相关 - 文件
  • P2242 公路维修问题
  • 安装wsl
  • 牛客多校04C :Computational Geometry Problem(p-Dyck路计数)