📜  JDK、JRE 和 JVM 之间的差异

📅  最后修改于: 2021-09-11 04:34:46             🧑  作者: Mango

Java开发工具包

Java开发工具包 (JDK) 是用于开发Java应用程序和小程序的软件开发环境。它包括Java运行时环境 (JRE)、解释器/加载器 (Java)、编译器 (javac)、存档器 (jar)、文档生成器 (Javadoc) 和Java开发所需的其他工具。

Java环境

JRE代表“Java运行时环境” ,也可以写成“Java RTE”。 Java运行时环境提供了执行Java应用程序的最低要求;它由Java虚拟机 (JVM)、核心类支持文件组成

Java虚拟机

这是:

  • 其中,Java虚拟机的工作的规范中指定。但是实现提供者可以独立选择算法。它的实现已经由 Sun 和其他公司提供。
  • 实现是满足JVM规范要求的计算机程序
  • 运行时实例每当您在命令提示符下编写Java命令来运行Java类时,就会创建一个 JVM 实例。

JDK、JRE 和 JVM 的区别

要了解这三者之间的区别,让我们考虑下图。
区别

  • JDKJava Development Kit (简称JDK)是提供开发和执行(运行) Java程序环境的工具包。 JDK 是一个工具包(或包),它包括两件事
      1. 开发工具(提供开发Java程序的环境)
      2. JRE(执行您的Java程序)。

    注意: JDK 仅供Java开发人员使用。

  • JREJava Runtime Environment (即 JRE)是一个安装包,它提供了在您的机器上运行(而不是开发) Java程序(或应用程序)的环境。 JRE 仅供那些只想运行Java程序的人使用,即您系统的最终用户。
  • JVMJava虚拟机(JVM) 是 JDK 和 JRE 中非常重要的一部分,因为它包含或内置于两者中。您使用 JRE 或 JDK 运行的任何Java程序都会进入 JVM,而 JVM 负责逐行执行Java程序,因此它也被称为解释器。

    JRE 和 JDK 是如何工作的?

    JRE 由什么组成?
    JRE 由以下组件组成:

    • 部署技术,包括部署、 Java Web Start 和Java Plug-in。
    • 用户界面工具包,包括抽象窗口工具包 (AWT)、Swing、 Java 2D、辅助功能、图像 I/O、打印服务、声音、拖放 (DnD)输入法
    • 集成库,包括接口定义语言 (IDL)、 Java数据库连接 (JDBC)、 Java命名和目录接口 (JNDI)、远程方法调用 (RMI)、基于 Internet 内部协议的远程方法调用 (RMI-IIOP)脚本.
    • 其他基础库,包括国际支持、输入/输出 (I/O)、扩展机制、Beans、 Java管理扩展 (JMX)、 Java机接口 (JNI)、数学、网络、覆盖机制、安全性、序列化Java for XML处理(XML JAXP)
    • Lang 和 util 基础库,包括lang 和 util、管理、版本控制、zip、仪器、反射、集合、并发实用程序、 Java存档 (JAR)、日志记录、首选项 API、引用对象正则表达式
    • Java虚拟机 (JVM) ,包括Java HotSpot 客户端服务器虚拟机

    JRE 是如何工作的?
    为了理解 JRE 的工作原理,让我们考虑一个保存为示例的Java源文件。Java。该文件被编译成一组存储在“ .class ”文件中的字节码。这里将是“ Example.class ”。
    编译时间

    下图描述了在编译时所做的事情。

    以下操作发生在运行时。

    • 类加载器

      类加载器加载执行程序所需的所有必要类。它通过将本地文件系统的命名空间与通过网络导入的命名空间分开来提供安全性。这些文件是从硬盘、网络或其他来源加载的。

    • 字节码验证器

      JVM 将代码通过字节码验证器检查格式并检查非法代码。例如,非法代码是违反对象访问权限或违反指针实现的代码。

      字节码验证器确保代码符合 JVM 规范并且不违反系统完整性。
      运行

    • 口译员

      在运行时,字节码由解释器加载、检查和运行。解释器有以下两个功能:

      • 执行字节码
      • 对底层硬件进行适当的调用

      两种操作都可以表示为:
      解释器和运行时
      要了解 JDK 和 JRE 之间的交互,请考虑下图。
      相互作用

    JVM 是如何工作的?

    JVM 在Java程序运行时成为 JRE 的一个实例。它被广泛称为运行时解释器。JVM 在很大程度上有助于从使用 JDK 程序库的程序员那里抽象内部实现。
    有关JVM的详细工作,请单击-> JVM的工作

    图片来源:

    • 尖角
    • 尖角
    • 尖角
    • 夸拉克顿
    • Java论文