JVM, JDK, JRE和OpenJDK之间的区别是什么?

我在用Java编程时遇到了这些短语,它们之间有什么区别?


当前回答

总而言之:

JRE = JVM + Java包(如util, math, lang, awt, swing等)+ 运行时库 JDK = JRE +开发/调试工具

如果你想用java开发,你需要JDK,但如果你只想运行java,你需要JRE。

其他回答

JVM是Java虚拟机-它实际上运行Java字节码。

JRE是Java运行时环境——其中包含JVM,并且是运行Java程序所需要的。

JDK是Java开发工具包——它是JRE,但添加了javac(这是编译Java源代码所需的工具)和其他编程工具。

OpenJDK是一个特定的JDK实现。

JDK (Java Development Kit):

包含开发Java程序所需的工具。 如果您想编写自己的程序并编译它们,则需要JDK。 JDK主要针对java开发。

JRE (Java Runtime Environment)

Java运行时环境包含JVM、类库和其他支持文件。 JRE的目标是执行Java文件。

JVM (Java虚拟机)

JVM根据底层操作系统和硬件组合将字节码解释为机器码。它负责所有的事情,比如垃圾收集、数组边界检查等等……Java虚拟机提供了一种平台独立的代码执行方式。

总而言之:

JRE = JVM + Java包(如util, math, lang, awt, swing等)+ 运行时库 JDK = JRE +开发/调试工具

如果你想用java开发,你需要JDK,但如果你只想运行java,你需要JRE。

另一个值得一提的方面是:

JDK (java开发工具包)

正如名称所示,您将需要它用于开发目的。

例如:一家软件公司会在他们的计算机中安装JDK,因为他们需要开发新的软件,其中包括编译和运行他们的Java程序。

因此我们可以说JDK = JRE + JVM。

JRE (java运行时环境)

运行Java程序需要它。你不能用它来编译Java程序。

例如:一个普通的计算机用户想要运行一些在线游戏,那么他的系统中就需要JRE来运行Java程序。

java虚拟机

你可能知道它运行字节码。它使Java平台独立,因为它执行你编译Java程序后得到的.class文件,而不管你是在Windows、Mac还是Linux上编译。

开放的JDK

就像我上面说的。现在JDK是由不同的公司制作的,其中一个是开源的,免费供公众使用的是OpenJDK,而其他一些是Oracle公司的jrocit JDK或IBM JDK。

然而,对于普通用户来说,它们可能都是一样的。

结论

如果你是一个Java程序员,你的系统中需要JDK,这个包将包括JRE和JVM,但如果你是一个喜欢玩在线游戏的普通用户,那么你只需要JRE,这个包中没有JDK。

换句话说,JDK是祖父,JRE是父亲,JVM是他们的儿子。

JVM:描述运行java程序的方式/资源的规范。实际执行字节代码,使java平台独立。在这个过程中,不同的平台是不同的。windows的JVM不能像UNIX的JVM那样工作。

JRE: JVM的实现。(JVM +运行时库)

JDK: JRE + java编译器等基本工具,从零开始构建java程序