【Java】JDK、JRE、JVM详细解读(区别和联系)

这篇具有很好参考价值的文章主要介绍了【Java】JDK、JRE、JVM详细解读(区别和联系)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Java】JDK和JRE的区别和联系

1. 介绍

大多数人刚接触Java的时候都会经常看到JDK、JRE、JVM,但可能一直迷迷糊糊,不知道它们之间真正的作用和含义,而了解JDK、JRE、JVM分别是什么及它们之间的关系有助于我们更加深刻的理解java语言的特性。

  • Java程序是运行在JVM(Java虚拟机)上的,在开发程序之前要配置Java开发环境,而配置环境要做的就是JDK的安装和配置。
  • 三者的大致结构是这样的,简单来说就是JDK包含JRE,JRE又包含JVM的关系。如下图所示:
    【Java】JDK、JRE、JVM详细解读(区别和联系)
    【Java】JDK、JRE、JVM详细解读(区别和联系)

从图中可以看出JDK是整个JAVA的核心,包括了Java运行环境JRE(Java Runtime Envirnment)、一堆Java开发工具(javac/java/jdb等)和Java基础的类库(即Java API 包)。

2. 详细解析

2.0 先说说安装

  • 1)如果安装JDK,电脑会有两套JRE:
    【Java】JDK、JRE、JVM详细解读(区别和联系)

    • 一套是JDK中的JRE,位于 java/jdk/jre 目录下。
      【Java】JDK、JRE、JVM详细解读(区别和联系)
    • 另外一套是JRE自己的,在下载安装时默认位于 Java\jre目录下。
      【Java】JDK、JRE、JVM详细解读(区别和联系)
  • 2)如果只安装JRE,会默认在Java 目录下安装唯一的一套JRE,位置可以选择,跟上面类似,只是没有了jdk。

2.1 JDK

  • JDK:Java Development Kit,是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包。

JDK:Java Development Kit,是Java的标准开发工具包(普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序)。

  • 它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心。

JDK一般有三种版本

  • SE(J2SE),standard edition,标准版,是我们通常用的一个版本
  • EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序
  • ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序 (相对来说现在使用的很少了)

【Java】JDK、JRE、JVM详细解读(区别和联系)
上图是Java中JDK的安装目录:

  • bin文件里面存放了JDK的各种开发工具的可执行文件,主要的是编译器(javac.exe)
  • db文件是一个先进的全事务处理的基于Java技术的数据库(jdk自带数据库db的使用)
  • include文件里面是Java和jvm交互用的头文件
  • jre为java运行环境
  • lib文件存放的是JDK工具命令的实际执行程序

2.2 JRE

  • JRE:Java Runtime Environment,是java运行时的环境,包含了java虚拟机,java基础类库,是使用java语言编写的程序运行所需要的软件环境。

JRE:Java runtime environment 是运行基于Java语言编写的程序所不可缺少的运行环境,用于解释执行Java的字节码文件。

  • 通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。
  • JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。
  • 与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。

【Java】JDK、JRE、JVM详细解读(区别和联系)
上图是Java中JRE的安装目录,里面有两个文件夹bin和lib。

  • 你可以认为bin里的就是JVM,lib中则是JVM工作所需要的类库,而JVM和 lib和起来就称为JRE;
  • 从JDK11开始,JDK和JRE都是在一起的,安装后默认是没有JRE的。如果需要JRE这个单独目录,可以在JDK目录下面去打开命令窗口,然后执行如下命令(win10执行这个生成JRE需要目录权限):
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

执行完之后就会生成JRE,但无论使用tomcat 还是eclipse,没有JRE文件夹实际上并不影响你的使用

2.3 JVM

JVM:Java Virtual Machine 是Java的虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。

所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。

2.4 Java可以跨平台的原因

使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM。不同平台的JVM都是不同的,但它们都提供了相同的接口。

JVM是Java程序跨平台的最核心的部分。

  • 只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。
  • 其屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

正是因为有了JVM的存在,Java才实现了强大的跨平台特性。

2.5 jvm执行程序的过程

  • 1)加载.class 文件
    • 所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。
    • 也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。
    • 只拥有JVM,我们还不能成功执行.class的类文件,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库
    • 运行class文件;
    • 可以在命令行中输入 java 字节码文件名 ,此时启动了一个jvm,加载字节码文件名.class字节码文件到内存,然后jvm运行内存中的字节码指令,在IDE上就类似于点击运行按钮
  • 2)管理并分配内存
  • 3)执行垃圾收集
    • 调用垃圾收集器进行垃圾回收。

3. 区别与联系

  • JDK用于开发,是给开发人员用的;JRE 用于运行java程序,是给普通用户使用的;只拥有JVM,我们还不能成功执行.class的类文件,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。( jvm+lib=jre )
    • 如果只是运行Java程序,可以只安装JRE,无需安装JDK。
    • 也就是说:使用JDK开发完成的java程序,可以交给JRE去运行。

JDK包含了JRE;JDK 和 JRE 中都包含 JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。
【Java】JDK、JRE、JVM详细解读(区别和联系)

4. 参考

【1】https://blog.csdn.net/qq_42257666/article/details/105701938
【2】https://blog.csdn.net/qq_38036909/article/details/110431326文章来源地址https://www.toymoban.com/news/detail-412547.html

到了这里,关于【Java】JDK、JRE、JVM详细解读(区别和联系)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JDK,JRE,JVM的区别

    JVM,也叫java虚拟机,用来运行字节码文件, 可将字节码翻译为机器码 ,JVM是实现java跨平台的关键,可以让相同的java代码在不同的操作系统上运行出相同的结果。 JRE,也叫 java运行时环境 ,包含JVM和java标准类库。 JDK,也叫 java开发工具包 ,能够 创建 和 编译java程序 (编译

    2024年02月13日
    浏览(52)
  • JVM,JRE和JDK的区别

    Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行

    2024年02月11日
    浏览(44)
  • JDK、JRE 和 JVM 之间的区别

    虚拟机 JVM(Java Virtual Machine)是一个抽象机器。之所以称为虚拟机,是因为它在物理上并不存在。它是一个规范,它提供了一个可以在其中执行 Java 字节码的运行时环境。它还可以运行那些用其他语言编写并编译为 Java 字节码的程序。 JVM 可用于许多硬件和软件平台。JVM、J

    2024年02月03日
    浏览(47)
  • JDK、JRE、JVM三者之间的关系以及区别

    JDK = JRE + Java 开发工具包 [Java,Javac,Javadoc,Javap等] JRE = JVM + Java 的核心类库 JDK是用于Java程序 开发 的最小环境,包含:Java程序设计语言,Java虚拟机(JVM),Java类库(API)。它能够创建和编译程序 JRE是Java程序 运行 的标准环境。包含:Java类库和Java虚拟机(JVM)。如果想运行一

    2024年02月16日
    浏览(50)
  • JDK、JRE与JVM三者之间的关系及区别

    JDK = JRE + Java 开发工具包 [Java,Javac,Javadoc,Javap等] JRE = JVM + Java 的核心类库 什么是JDK,JDK是用于Java程序开发的最小环境,包含:Java程序设计语言,Java虚拟机(JVM),Java类库(API)。它能够创建和编译程序。 什么是JRE,JRE是Java程序运行的标准环境。包含:Java类库和Java虚拟机

    2024年02月16日
    浏览(43)
  • Java开发环境简介(JDK、JRE、JVM)

    目录 1、Java开发环境 2、JDK和JRE 3、JDK下载和安装 3.1 下载 3.2 安装 3.3 配置path环境变量 JDK8配置方案1:只配置path ⭐JDK8配置方案2:配置JAVA_HOME+path(推荐) path配置小结 JDK17配置方案:自动配置 4、Java核心机制:JVM 补充:Java字节码 JVM的优点 JVM的缺点 JVM的运行过程 5、Java程序

    2024年02月21日
    浏览(45)
  • 【Java探索之旅】我与Java的初相识(二):程序结构与运行关系和JDK,JRE,JVM的关系

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Java入门到精通 🌄 莫道桑榆晚,为霞尚满天! Java作为一门广泛应用的编程语言,其结构和运行环境对于初学者来说可能会带来一些困惑。本文旨在帮助初学者了解Java程序的基本结构以及可能遇到的一些常见问题,同时解释了JDK、JRE和

    2024年02月04日
    浏览(84)
  • 【面试题】JDK(工具包)、JRE(运行环境和基础库)、JVM(java虚拟机)之间的关系?

    【面试题】JDK、JRE、JVM之间的关系? JDK (Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。 JRE (Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境

    2024年02月11日
    浏览(60)
  • 【Java基础】走进Java:JDK和JRE分别是什么?它们有什么区别?

      Java是一门非常流行的编程语言,被广泛应用于各个领域的软件开发。在Java开发中,JRE和JDK是两个重要的概念,它们有着不同的作用和功能。本篇技术博客将会介绍JRE和JDK的概念、组成部分、安装和配置、以及它们之间的区别和联系。希望对Java开发者们有所帮助。   

    2023年04月14日
    浏览(69)
  • JDK、JRE、Java SE、Java EE和Java ME有什么区别?

    Java现在已不仅仅是一种语言,从广义上说,它代表了一个技术体系。该体系根据应用方向的不同主要分为Java SE、Java EE和Java ME的3个部分。 1.SE(JavaSE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。 2.EE(JavaEE),enterprise edition,个业版,使用这种

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包