JVM, JDK, JRE和OpenJDK之间的区别是什么?
我在用Java编程时遇到了这些短语,它们之间有什么区别?
JVM, JDK, JRE和OpenJDK之间的区别是什么?
我在用Java编程时遇到了这些短语,它们之间有什么区别?
当前回答
Java是一种语言,它包含严格的强类型语法。
Java 2平台标准版,也称为J2SE,指的是平台,并包括Java中的类。Lang和java。IO包,等等。它是构建Java应用程序的基础。
Java虚拟机(JVM)是运行已编译Java代码的软件虚拟机。因为编译后的Java代码只是字节码,JVM负责在运行字节码之前将其编译为机器码。(这通常被称为即时编译器或JIT编译器。)JVM还负责内存管理,这样应用程序代码就不必这么做了。
Java开发工具包,或称JDK,过去是,现在仍然是Java开发人员用来创建Java应用程序的软件。它包含一个Java语言编译器、一个文档生成器、用于处理本机代码的工具,以及(通常)用于平台的Java源代码,以启用调试平台类。
Java运行时环境(JRE)过去是,现在仍然是最终用户下载来运行已编译的Java应用程序的软件。它包含一个JVM,但不包含JDK中绑定的任何开发工具。但是,JDK确实包含JRE。
其他回答
JDK -将java编译为字节码。由调试器,编译器等组成。
javac file.java // Is executed using JDK
JVM——执行字节代码。JVM使java平台独立。但是JVM因平台而异。
JRE - JVM与java运行时库一起执行java程序。
另一个值得一提的方面是:
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是他们的儿子。
简单的图片来说明JDK、JRE、JDK。
JDK一般来说,它只会安装在开发环境中,比如在开发人员中,在公司的实时QA系统中。在服务器上运行的原始代码将没有JDK。
JRE是JDK的一部分,也可以独立安装在服务器上。在处理用户请求的实时服务器中,只安装JRE和开发人员开发的代码(*.class格式)
JVM Developer开发的代码>在开发机器上测试和执行。执行阶段需要Java的媒介。
.class文件不是本地代码(cpu能理解的代码)。如果.java文件直接转换为本机代码,则无法实现WORA(一次编写,随处运行)的概念。
本机代码因操作系统而异。所以,Java创建了一个叫做。class的中间文件和一个叫做“JVM”的神奇程序。将.class转换为本机代码是JVM的职责。
JVM: java的虚拟机。告诉机器用Java代码做什么。不能按原样下载JVM。它被打包在其他组件中。
JRE:上面提到的其他组件是JRE。 它是JVM+其他jar创建运行时环境
JDK:包含JRE(JRE又包含JVM)。获得JDK后,不需要分别安装JRE和JVM。它包含编译器,编译你的.java文件到.class文件
JRE执行应用程序,但JVM逐行读取指令,因此它是解释器。
JDK = JRE +开发工具
JRE = JVM +库类