你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?

你已经分清JAVA中JVM、JDK与JRE的作用和关系了吗?

    • [一. JVM、JDK与JRE的关系](#一. JVM、JDK与JRE的关系)
    • [二. JVM、JDK与JRE的作用](#二. JVM、JDK与JRE的作用)
      • [2.1 什么是JVM?](#2.1 什么是JVM?)
      • [2.2 什么是JDK?](#2.2 什么是JDK?)
      • [2.3 什么是JRE?](#2.3 什么是JRE?)

前言

点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。

作者:神的孩子都在歌唱

在Java的世界里,JVM、JDK和JRE这三个术语常常让人感到混淆。它们究竟是什么?有什么区别?如何协同工作,共同支持Java程序的运行?接下来 神唱 会带你一探究竟

一. JVM、JDK与JRE的关系

  • JVM 是Java程序执行的核心,它负责执行字节码。
  • JRE 包含JVM和Java类库,用于支持Java程序的运行。JRE没有开发工具,它是用户运行Java程序时所需要的环境。
  • JDK 包含了JRE以及开发Java程序所需的其他工具(如编译器和调试器)。开发者需要安装JDK来编写和调试Java程序。

简单来说,JDK包括了JRE,而JRE又包括了JVM 。如下图

二. JVM、JDK与JRE的作用

2.1 什么是JVM?

JVM(Java Virtual Machine)即Java虚拟机,是Java程序运行的核心组件之一。它的作用就像一个 "翻译官" ,将Java字节码(.class文件)转换为 机器码 ,让程序能够在不同的操作系统和硬件平台上运行。这也是Java语言实现 "一次编写,到处运行" 理念的关键。

JVM的核心职责包括:

  • 加载字节码:JVM加载.class文件并进行验证。
  • 解释执行或编译执行:JVM通过解释器或即时编译(JIT)技术执行字节码。
  • 内存管理:JVM负责垃圾回收和内存的分配与释放。

值得一提的是,JVM与具体的操作系统和硬件平台紧密相关,因此每种平台 (Windows,Linux,macOS) 都有相应的JVM实现。所以JVM 并不是只有一种!只要满足 JVM 规范,每个公司、组织或者个人都可以开发自己的专属 JVM ,我们平时接触的一般都是 HotSpot VM 。维基百科上有常见 JVM 的对比:Comparison of Java virtual machines

2.2 什么是JDK?

JDK(Java Development Kit)是Java开发工具包,它是开发Java应用程序的完整工具集。JDK包含了JVM以及用于开发Java程序所需要的各种工具和API。换句话说,JDK是开发者用来编写、调试、和运行Java程序的"武器库"。

JDK的主要组成部分包括:

  • JVM:我们刚刚讲过的Java虚拟机,用于执行Java程序。
  • Java编译器(javac):将Java源代码(.java文件)编译成字节码(.class文件)。
  • 调试工具:用于在开发过程中调试Java程序。
  • 标准库(Java API):JDK中包含了大量的标准类库,比如文件操作、网络编程、集合框架等。
  • 其他工具 :例如jar命令,用于创建和管理Java归档文件。

如果你是一个Java开发者,安装JDK是必不可少的一步。

2.3 什么是JRE?

JRE(Java Runtime Environment)是Java运行时环境,它是运行Java应用程序所需的最小环境。与JDK相比,JRE更为轻量,它不包含开发工具(比如编译器),只有JVM和一些支持运行Java程序的类库。

JRE的主要组成部分包括:

  • JVM:用于执行Java程序。
  • 类库(Java class Libaray):JRE包含了Java应用运行所需的标准类库,例如IO库、网络库等。

对于普通用户而言,安装JRE即可运行大部分的Java程序。

作者:神的孩子都在歌唱

本人博客:https://blog.csdn.net/weixin_46654114

转载说明:务必注明来源,附带本人博客连接

相关推荐
m0_62457859几秒前
SQL分组后如何计算移动平均值_利用窗口函数AVG配合ROWS
jvm·数据库·python
2401_824222698 分钟前
如何修复待办事项列表无法添加任务的 JavaScript 错误
jvm·数据库·python
njsgcs9 分钟前
solidworks自动标注折弯4 无向图 c#
开发语言·c#·solidworks
染夕陌木12 分钟前
RPC/服务调用框架中“方法无法应用到给定类型”错误的通用排查指南
java·ide·rpc
大大杰哥16 分钟前
String常用方法
java
c++之路22 分钟前
C++ 多线程
开发语言·c++
CHANG_THE_WORLD27 分钟前
<Fluent Python > Unicode 文本与字节
开发语言·python
AI人工智能+电脑小能手32 分钟前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index
凯瑟琳.奥古斯特33 分钟前
Bootstrap快速上手指南
开发语言·前端·css·bootstrap·html
嵌入式×边缘AI:打怪升级日志35 分钟前
嵌入式Linux开发(了解交叉编译工具链的组成)
java·linux·运维