你已经分清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

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

相关推荐
无心水3 分钟前
【Java面试笔记:基础】5.String、StringBuffer、StringBuilder有什么区别?
java
oioihoii20 分钟前
C++23 新特性:令声明顺序决定非静态类数据成员的布局 (P1847R4)
java·开发语言·c++23
掘金詹姆斯26 分钟前
在线接口调试工具-swagger
java·swagger
Java手札1 小时前
Windows下Golang与Nuxt项目宝塔部署指南
开发语言·windows·golang
小生凡一1 小时前
腾讯二面:TCC分布式事务 | 图解TCC|用Go语言实现一个TCC
开发语言·分布式·golang
苍煜1 小时前
MinIO 教程:从入门到Spring Boot集成
java·spring boot·后端·minio
掘金詹姆斯1 小时前
LangChain4j—持久化聊天记忆 Persistence(五)
java·人工智能
minji...1 小时前
C语言 函数递归
c语言·开发语言·算法
程序猿大波1 小时前
基于Java,SpringBoot,Vue,HTML宠物相亲配对婚恋系统设计
java·vue.js·spring boot