我很难理解JVM(Java 虚拟机)、JRE(Java 运行时环境)、JDK(Java 开发工具包)、JIT(即时编译器)和javac(Java 编译器)之间的区别。
所有这些之间的比较和对比是什么?
您可能已经做了很多谷歌来找到这个问题的答案,并遇到了一个非常无聊的图表,显示了 JVM、JRE 和 JVM 之间的体系结构和相互关系。我花了将近一年的时间才真正理解它(不是理论上)。
让我们找出这个简单(但非常重要)问题的答案:
什么是 JDK、JRE 和 JVM?
JDK:- Java Development Kit(简称JDK)是提供开发和执行(运行)Java程序环境的工具包。例如。你(作为 Java 开发人员)正在你的机器上开发一个会计应用程序,那么你需要在你的机器上开发和运行这个桌面应用程序吗?为此,您将需要 JDK,您只需要访问 sun 或 oracle 的官方网站,将最新版本的 JDK 下载到您的机器中。
因此,JDK 是一个工具包(或包),它包括两件事 i) 开发工具(提供开发 java 程序的环境)和 ii)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的所有主要组件之间的体系结构和相互关系有一个清晰的了解。