JDK,JRE和JVM之间的区别

 

Table of Contents

JAVA开发套件

JAVA运行时环境

JAVA虚拟机

JDK,JRE和JVM之间的差异

JRE和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是一个工具包(或包装),其中包括两件事
    • 开发工具(提供开发Java程序的环境)
    • 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的工作

图片来源:

  • 尖角
  • 尖角
  • 尖角
  • Quoracdn
  • Java论文

 

本文由Krishna Bhatia提供。如果您喜欢GeeksforGeeks并希望做出贡献,则还可以使用contribution.geeksforgeeks.org撰写文章,或将您的文章邮寄到contribution@geeksforgeeks.org。查看您的文章出现在GeeksforGeeks主页上,并帮助其他Geeks。

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

注意读者!现在不要停止学习。以对学生友好的价格掌握Java和Java Collections基础知识课程中所有重要的Java和Collections概念,并为行业做好准备。

推荐文章:

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页