JVM(Java虚拟机)、JDK(Java开发工具包)、JRE(Java运行环境)和OpenJDK之间有什么区别?

374
JVM、JDK、JRE和OpenJDK之间有什么区别?

可能是[Java SE 6 vs. JRE 1.6 vs. JDK 1.6 - What do these mean?](https://dev59.com/_XVC5IYBdhLWcg3wliCe)的重复问题。 - user207421
22个回答

4

还有一个值得提及的方面:

JDK(java开发工具包)

像其名字所示,您需要它来进行开发。

例如:软件公司会在计算机上安装JDK,因为他们需要开发新软件,这涉及到编译和运行Java程序。

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

JRE(java运行环境)

这是运行Java程序所必需的。您不能使用它来编译Java程序。

例如:普通计算机用户想要运行一些在线游戏,则需要在系统中安装JRE以运行Java程序。

JVM(java虚拟机)

正如您所知道的,它运行字节码。它使Java平台独立,因为它执行编译Java程序后获取的.class文件,无论您是在Windows、Mac还是Linux上编译它。

Open JDK

就像我上面说的。现在JDK由不同的公司制作,其中之一是开放源代码并免费供公众使用的OpenJDK,而其他一些则是Oracle Corporation的JRockit JDK或IBM JDK。

但对于一般用户来说,它们都可能看起来相同。

结论

如果您是Java程序员,则需要在系统中安装JDK,此软件包还将包括JRE和JVM,但如果您是普通用户,喜欢玩在线游戏,则只需要JRE,而此软件包不包含JDK。

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


10
你的帖子错得到处都是。JRE(运行时环境)包含JVM(虚拟机)和Java类库。JDK包含JRE和一堆供开发者使用的编程工具。参考链接:http://en.wikipedia.org/wiki/JDK http://en.wikipedia.org/wiki/Java_virtual_machine 当你修改后回复我的评论,我将取消踩赞。 - nhahtdh
@nhahtdh 我们可以这样说:JDK 是一个独立的包,可以单独下载和安装。JRE 包括一些类、Java 插件和 JVM。 - Prakash P

2

JVM

JVM(Java虚拟机)是一种抽象的计算机,它是一个规范,为Java字节码执行提供运行时环境。JVM可用于许多硬件和软件平台。

JRE

JRE是Java运行时环境的缩写。它用于提供运行时环境,是JVM的实现。它在物理上存在,并包含JVM在运行时使用的一组库和其他文件。

JDK

JDK是Java开发工具包的缩写。它在物理上存在,并包含JRE和开发工具。

链接: http://www.javatpoint.com/difference-between-jdk-jre-and-jvm


2

JVM:Java虚拟机,告诉计算机如何处理Java代码。您不能直接下载JVM,它通常作为其他组件的一部分打包提供。

JRE:上述提到的其他组件是JRE。它由JVM和其他JAR文件组成,用于创建运行时环境。

JDK:包含JRE(其中包含JVM)。一旦您获取了JDK,就不需要单独安装JRE和JVM。它还包含编译器,用于将您的.java文件编译为.class文件。


2

简单的图片说明了JDK、JRE和JVM。 JDK,JRE,JVM

JDK 一般只在开发设置中安装,例如在企业公司的开发人员和QA系统中。在服务器上运行的原始代码不会有JDK。

JRE 是JDK的一部分,也可以独立安装在服务器上。在为用户请求提供服务的实时服务器上,只安装了JRE和由开发人员开发的代码(以*.class格式)。

JVM 开发人员开发的代码经过测试并在开发机器上执行。执行阶段需要一个Java的媒介。

.class文件不是本地代码(CPU能够理解的代码)。如果将.java文件直接转换为本地代码,则无法实现WORA(编写一次,在任何地方运行)的概念。

本地代码因操作系统而异。因此,Java创建了一个名为.class的中间文件和一个神奇的程序,称为"JVM"。它是JVM的职责将.class转换为本地代码。


2

JVM:JVM代表字节码解释器,它是平台相关的。例如,在Windows平台上,“java.exe”或“javaw.exe”进程就是jvm进程。

JDK:是一个包含必要库和工具来开发和执行Java程序/应用程序的工具包。

JRE:是Java应用程序的执行环境,它仅支持运行时依赖项,包括编译后的程序所需的JVM。如果我们想编译Java程序,则需要JDK。


2

简而言之:

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

如果你想开发Java程序,你需要JDK,但如果你只是想运行Java程序,你只需要JRE。


0

JVM Java虚拟机,实际上是执行Java字节码的执行块。它是JAVA平台上的执行块,将字节码转换为机器码。

JRE Java运行时环境,提供了执行Java应用程序的最低要求;它由Java虚拟机(JVM)、核心类和支持文件组成。

JDK Java开发工具包,它拥有开发应用软件所需的所有工具。它相当于JRE+JVM。

Open JDK 是Java平台的免费开源实现。


0

JRE 执行应用程序,但 JVM 逐行读取指令,因此它是解释器。

JDK=JRE+开发工具

JRE=JVM+库类


0

JVM的全称是Java虚拟机,JVM是Java架构的主要组成部分。JVM是用C编程语言编写的。Java编译器为JVM生成字节码。JVM读取字节码,验证字节码,并将代码与库链接起来。

JRE的全称是Java运行时环境。它在运行时提供环境。它是实际存在的。它包含JVM +一组库(jar) +其他文件。

JDK的全称是Java开发工具包。它用于开发Java应用程序。还可以调试和监视Java应用程序。JDK包含JRE +开发工具(javac、java)

OpenJDK是Sun JDK的开源版本。Oracle JDK是Sun官方的JDK。


0

JDK:编写和运行Java代码所需的完整软件包。

OpenJDK:JDK的独立实现,使其更加优化。

JVM:将Java代码转换为字节码,并提供规范,告诉如何编译、加载、验证、检查错误和执行Java代码。

JRE:JVM的实现,其中使用了一些Java库来运行程序。


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