📜  JDK JRE和JVM之间的区别

📅  最后修改于: 2020-02-10 15:17:50             🧑  作者: Mango

JAVA开发套件(JDK)

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

JAVA运行时环境(JRE)

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

JAVA虚拟机(JVM)

它是:

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

JDK,JRE和JVM之间的差异

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

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

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

  • JRE – Java运行时环境(JRE)是一个安装包,提供在您的计算机上运行(不开发) Java程序(或应用程序)的环境。JRE仅由只希望运行Java程序(即系统的最终用户)的用户使用。
  • JVM – Java虚拟机(JVM)是​​JDK和JRE的非常重要的组成部分,因为它们既包含又内置在其中。无论您使用JRE或JDK运行的任何Java程序都进入JVM,并且JVM都负责逐行执行Java程序,因此它也称为解释器。

JRE和JDK如何工作?

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

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

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

上图描述了在编译时执行的操作。
在运行时发生以下动作。

    • 类加载器

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

    • 字节码验证器

JVM通过字节码验证程序放置代码,字节验证程序检查格式并检查非法代码。例如,非法代码是违反对象访问权限或违反指针实现的代码。
字节码验证程序可确保代码符合JVM规范,并且不会违反系统完整性。

    • 解释器

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

      • 执行字节码
      • 对基础硬件进行适当的调用

两种操作都可以显示为:


要了解JDK和JRE之间的交互,请考虑下图。

JVM如何工作

JVM在Java程序运行时成为JRE的实例。众所周知,它是运行时解释器.JVM在很大程度上帮助了使用JDK的程序库的程序员的内部实现抽象。
有关JVM的详细工作,请单击-> JVM的工作原理