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

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

相关推荐
oioihoii1 分钟前
C++11标准库算法:深入理解std::none_of
java·c++·算法
1024小神12 分钟前
tauri项目在windows上的c盘没有权限写入文件
c语言·开发语言·windows
老虎062720 分钟前
数据结构(Java)--位运算
java·开发语言·数据结构
yanjiaweiya21 分钟前
云原生-集群管理续
java·开发语言·云原生
Swift社区21 分钟前
Swift 解 LeetCode 320:一行单词有多少种缩写可能?用回溯找全解
开发语言·leetcode·swift
写不出来就跑路27 分钟前
暑期实习感悟与经验分享:从校园到职场的成长之路
java·开发语言·经验分享·spring boot
泰勒疯狂展开31 分钟前
Java研学-MongoDB(二)
java·mongodb
程序员张34 小时前
Maven编译和打包插件
java·spring boot·maven
ybq195133454315 小时前
Redis-主从复制-分布式系统
java·数据库·redis
weixin_472339466 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel