【秒懂JDK,JRE,JVM的关系】

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

 🌠作者:@TheMythWS.

🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。 

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

JDK与JRE与JVM的关系

先用一张图来直观感受JDK JRE JVM之间的关系

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

JDK与JRE的关系  

先说JDK和JRE:
首先从概念上理解一下吧,JDK(Java Development Kit)简单理解就是Java开发工具包,JRE(Java Runtime Enviroment)是Java的运行环境,JVM( java virtual machine)也就是常常听到Java虚拟机。

JDK是面向开发者的,JRE是面向使用JAVA程序的用户

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

通过上图发现发现有两个JRE文件夹,如果细看里面的内容基本上是一样的,如果是只是Java程序使用者,那么只会有最外层的那个JRE目录,JDK中是JRE自带的,你如果安装了JDK必然里面会有一个JRE.那么问题来了,为什么会有两套JRE呢?
从侧面证明:

利用javac.exe进行编译:

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

修改这个D:\Java\jdk-8u192\lib文件下的tools.jar,随便修改个名字,再去编译

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

证明:

dt.jar和tools.jar是两个java最基本的包,里面包含了从java最重要的lang包到各种高级功能如可视化的swing包,是java必不可少的。而path下面的bin里面都是java的可执行的编译器及其工具,如java,javadoc等,报错的原因就是输入的javac的命令不是去JDK中bin目录去找的javac.exe,而是去JDK中lib目录中的tools.jar中com.sun.tools.javac.Main中执行,因此javac.exe只是一个包装器(Wrapper),存在的目的是为了让开发者免于输入过长的指命。

这个时候发现JDK里的工具几乎是用Java所编写,同属于Java应用程序,因此要使用JDK所附的工具来开发Java程序,所以自身需要附一套JRE才能运行

上图中与jdk同级目录下的JRE就是用来运行一般Java程序用的。

两套JRE运行的时候究竟运行哪一个呢?

这个时候JDK中java.exe先从自身目录中找,然后父级目录中找,如果都没有就去注册表中找。

JRE与JVM的关系  

再说JRE和JVM: 

JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,class文件并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行,类似于C#中的CLR。

以下先补充一下跨平台的原理:

Java跨平台解释:

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

再次强调:javac的命令不是去JDK中bin目录去找的javac.exe,而是去JDK中lib目录中的tools.jar中com.sun.tools.javac.Main中执行,因此javac.exe只是一个包装器(Wrapper),存在的目的是为了让开发者免于输入过长的指命。

C语言跨平台解释:

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

总结一下:
JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的”虚拟计算机”。他也定义了指令集、寄存器集、结构栈、垃圾收集堆、内存区域。JVM负责将Java字节码解释运行,边解释边运行,这样,速度就会受到一定的影响。
不同的操作系统有不同的虚拟机。Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。 Java虚拟机是实现跨平台的核心机制。如图所示:

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

我们说的语言跨平台是编译后的文件跨平台,而不是源程序跨平台。
接下来我们再比较下两种方式的差异:

  • C语言是编译执行的,编译器与平台相关,编译生成的可执行文件与平台相关;
  • Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器.

上面说完了跨平台原理我们再谈JRE和JVM,JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm 和 lib和起来就称为jre。

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理

JVM + Lib = JRE,如果讲的具体点就是bin/server目录下的jvm.dll文件, jvm.dll无法单独工作,当jvm.dll启动后,会使用explicit的方法(就是使用Win32 API之中的LoadLibrary()与GetProcAddress()来载入辅助用的动态链接库),而这些辅助用的动态链接库(.dll)都必须位 于jvm.dll所在目录的父目录之中。因此想使用哪个JVM,只需要设置PATH,指向JRE所在目录下的jvm.dll。

【秒懂JDK,JRE,JVM的关系】,JavaSE,java,jvm,jre,jdk,跨平台原理文章来源地址https://www.toymoban.com/news/detail-768334.html

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

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

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

相关文章

  • JDK、JRE及JVM的关系及作用

    JDK、JRE及JVM的关系及作用,你未必真的知道。更多内容详见公众hao:云水致诚 1 、JDK JDK(Java Development Kit)是java程序的开发工具集,包含了运行环境JRE、开发工具及基础类库等。 注意: 生产环境,目前使用JDK同时作为开发和运行环境的比较多,主要是为了排查问题方便的同

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

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

    2024年02月04日
    浏览(41)
  • 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日
    浏览(37)
  • 【面试题】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日
    浏览(41)
  • 从官网认识 JDK,JRE,JVM 三者的关系

    点击下方关注我,然后右上角点击...“设为星标”,就能第一时间收到更新推送啦~~~ JVM 是一些大厂面试必问点,要想解决 OOM、性能调优方面的问题,掌握 JVM 知识必不可少,从今天开始,将为大家介绍 JVM 的常用知识。 1、Java 官网 Java 官网主页:https://docs.oracle.com/en/java/in

    2024年02月15日
    浏览(37)
  • 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日
    浏览(33)
  • 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日
    浏览(32)
  • 【java基础面试题】jdk、jre、jvm区别

    【java基础面试题】jdk、jre、jvm区别 jdk ​ 从概念上讲JDK是JAVA开发工具,用它来开发JAVA程序,里面有很多基础类库和jre。 ​ JDK(Java Development Kit),它是功能齐全的 Java SDK,是提供给开发者使用的,能够创建和编译 Java 程序。他包含了 JRE,同时还包含了编译 java 源码的编译器

    2024年02月10日
    浏览(30)
  • 【Java】JDK、JRE、JVM详细解读(区别和联系)

    大多数人刚接触Java的时候都会经常看到JDK、JRE、JVM,但可能一直迷迷糊糊,不知道它们之间真正的作用和含义,而了解JDK、JRE、JVM分别是什么及它们之间的关系有助于我们更加深刻的理解java语言的特性。 Java程序是运行在JVM(Java虚拟机)上的,在开发程序之前要配置Java开发环

    2023年04月13日
    浏览(71)
  • Java中JVM、JRE和JDK三者有什么区别和联系?

    任何语言或者软件的运行都需要环境。就像人要生活在空气中,鱼要活在水中,喜阴植物就不能放在阳光下暴晒一样,任何对象个体的存在都离不开其所需要的环境,编程语言亦是一样的。 java 语言的开发运行,也离不开 Java 语言的运行环境 JRE。没有 JRE 的支持,Java 语言便

    2024年02月08日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包