Java组件(JRE、JDK、JVM、JIT和javac)有什么区别?

8

我在理解Java虚拟机(JVM)、Java运行时环境(JRE)、Java开发工具包(JDK)、即时编译器(JIT)和Java编译器(javac)之间的区别时遇到了困难。

它们之间有什么好的比较和对比呢?


https://www.javatpoint.com/difference-between-jdk-jre-and-jvm - Aman
2个回答

10

enter image description here

你可能已经通过谷歌搜索了很多次,想找到关于JVM、JRE和JDK之间架构和相互关系的答案,但是却只看到了一张无聊的图表。实际上,我花了近一年的时间才真正理解了它们(而不仅仅是理论方面)。

让我们来解决这个简单但非常重要的问题:

JDK、JRE和JVM是什么?

JDK:Java开发工具包(简称JDK)是提供开发和执行Java程序所需环境的工具包。例如,作为Java开发人员,您正在自己的计算机上开发会计应用程序,那么您需要在计算机上安装什么来开发和运行这个桌面应用程序呢?您需要下载最新版本的JDK并安装到您的计算机中。因此,JDK是一个包含两个组成部分的工具包,即开发工具(提供开发Java程序的环境)和JRE(用于执行Java程序)。JDK仅由Java开发人员使用。

JRE:Java运行时环境(简称JRE)是一个安装包,提供仅运行(而不是开发)Java程序或应用程序所需的环境。例如(继续使用相同的示例),在开发完您的会计应用程序后,您想要在客户机器上运行此应用程序。现在,在这种情况下,您的客户只需要在计算机中安装JRE即可运行您的应用程序。

因此,JRE仅由那些希望运行Java程序的人使用,即系统的最终用户。

JVM:Java虚拟机(JVM)是JDK和JRE的非常重要的组成部分,因为它包含或内置于两者中。无论您使用JRE还是JDK运行Java程序,都将进入JVM,并且JVM负责逐行执行Java程序,因此也被称为解释器(我们将在稍后讨论解释器)。因此,您不需要单独安装JVM到计算机中,因为它已经内置在JDK或JRE安装包中。我们很快就会更深入地探讨JVM。

最后,在了解了Java的所有三个主要部分之后,您可以查看上面的图表,以清楚地了解Java的所有主要组件之间的架构和相互关系。


3
JIT是什么意思? - Arun Raaj
有关javac和JIT之间的区别,请查看这篇信息文章- http://nullpointer.debashish.com/primer-difference-between-javac-and-jit - Sarth

3

嗯,我想告诉你我的理解。

JDK(Java开发工具包)是一个完整的Java开发平台。我们可以编译、调试和运行代码。JDK依赖于操作系统,因此有一些版本分类为Windows、Linux和Mac。

JRE(Java运行时环境)是Java的运行时环境。如果你曾经玩过任何用Java编写的游戏,你会发现在玩游戏之前必须安装JRE。这就是Java运行时环境。

JVM(Java虚拟机)是JRE的一部分。它是JRE中最重要的部分。

JIT是一种工具,可以将字节码转换为二进制代码。

javac是一种工具,可以将代码转换为Java字节码。

我们可以总结关系:

JDK = JRE + javac + jconsole +jvisualvm + demo + document + other

JRE = JVM + JAVA二进制代码 + 其他库 + 其他

JVM = JIT + 其他

Diagram showing relationships


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接