JDK、JRE和JVM之间有什么区别?

JAVA开发套件

Java Development Kit(JDK)是用于开发Java应用程序和applet的软件开发环境。它包括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之间的差异

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

区别

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), 数学, 网络, 覆盖机制, 安全性, 序列化和用于XML处理的Java(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的程序中使用库的程序员中提取内部实现。

如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

来源:

https://www.srcmini02.com/69421.html

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?