JDK和JRE有什么区别?

1079

编辑备注:这个问题是在2009年提出的,那时候世界还很不同。到了2022年,标准的OpenJDK开源版本只包含JDK。


JDK和JRE有什么区别?

它们的角色是什么,我应该在何时使用其中之一?


13
这个问题可以在以下网址找到简明扼要的答案: http://www.java.com/zh_CN/download/faq/techinfo.xml - Akshay Lokur
7
可能是What is the difference between JVM, JDK, JRE & OpenJDK?的重复内容。 - kenorb
10
根据时间戳,这个链接的问题似乎是与这个重复。 - Ungeheuer
20个回答

7

JVM(Java虚拟机)是一个抽象的机器。它提供了一个运行时环境,可以执行Java字节码。

JRE是Java Runtime Environment的缩写。它用于提供运行时环境。它是JVM的实现。它实际存在。它包含一组库+其他文件,这些文件在运行时由JVM使用。

JDK是Java Development Kit的缩写。它实际存在。它包含JRE +开发工具。


7
如果您想运行Java程序而不是开发它们,请下载Java运行时环境(JRE)。如果您想开发Java程序,请下载Java开发工具包(JDK)。

JDK

JDK被称为开发套件,其中包括开发和运行Java应用程序所需的所有内容。
JDK是一种用于构建应用程序、组件和小应用程序的开发环境。

JRE

JRE包含了运行Java应用程序所需要的一切编译形式。您不需要任何库或其他东西,所有需要的都已经编译好了。
JRE不能用于开发,只能用于运行应用程序。

6

简单来说:

JVM是Java代码运行的虚拟机。

JRE是运行Java应用程序所需的环境(标准库和JVM)。

JDK是带有开发人员工具和文档的JRE。


6
如果你是Java程序员,你需要在你的系统中安装JDK,这个包将包括JRE和JVM。但如果你是一个普通用户,想要玩在线游戏,那么你只需要JRE,这个包里面不包含JDK。
JVM(Java虚拟机)是一台抽象机器。它是一个规范,提供了Java字节码可以执行的运行时环境。 JVM可以用于许多硬件和软件平台。JVM、JRE和JDK是与平台相关的,因为每个操作系统的配置都不同。但Java是独立于平台的。
JRE包含了运行Java应用程序所需的全部内容。你不需要任何库和其他东西,所有你需要的东西都已经编译好了。JRE不能用于开发,只能用于运行应用程序。
Java SE开发工具包(JDK)包括JRE和命令行开发工具,如编译器和调试器,这些工具对于开发小程序和应用程序是必要或有用的。

(来源:GeeksForGeeks问答Java平台概述


有多个网站存在抄袭行为(针对JVM和JDK部分)。下次请引用您的来源--这不是您的原创作品。 - Jonathan Lam

6
这些术语(JVM、JDK、JRE)的清晰理解对于掌握它们的用法和差异至关重要。
JVM Java虚拟机(JVM)是一个运行时系统,用于执行Java字节码。JVM就像一个虚拟计算机,可以执行一组已编译指令并操作内存位置。当Java编译器编译源代码时,它会生成高度优化的指令集,称为字节码,在.class文件中。JVM解释这些字节码指令并将其转换为机器特定的代码以供执行。
JDK Java开发工具包(JDK)是一个软件开发环境,可用于开发和执行Java应用程序。它包括JRE和一组编程工具,如Java编译器、解释器、appletviewer和文档查看器。JDK通过Java SE、Java EE或Java ME平台实现。
JRE Java运行时环境(JRE)是JDK的一部分,包括JVM、核心类和几个支持应用程序开发的库。尽管JRE作为JDK的一部分可用,但您也可以单独下载和使用它。
完整理解请参见我的博客:Jdk Jre Jvm and differences

5

JDK是编译代码和将Java代码转换为字节码的必要工具,而JRE则用于执行字节码。


5
@Noy: 这份资料不仅信息量很少,而且没有包含其他回答中不存在的任何内容。 - Amos M. Carpenter

5

JDK 包含 JRE 和命令行开发工具,如编译器和调试器,这些工具对于开发小应用程序和应用程序是必要或有用的。

JRE 基本上是 Java 虚拟机,在其中您的 Java 程序运行。它还包括用于 Applet 执行的浏览器插件。

JDK 是一台抽象的机器。它是一个规范,提供了运行环境,在其中可以执行 Java 字节码。

所以,基本上 JVM < JRE < JDK,就像 @Jaimin Patel所说的那样。


4

JDK和JRE的区别在于,JDK是Java软件开发工具包,而JRE则是运行程序的地方。


4
假设您是一名开发人员,那么您的角色就是开发程序并执行程序。因此,您必须拥有用于开发和执行的环境,这由JDK提供。
假设您是客户端,则无需担心开发。您只需要一个运行程序并获取结果的环境,这由JRE提供。
JRE执行应用程序,但JVM逐行读取指令,因此它是解释器。
JDK = JRE + 开发工具
JRE = JVM + 库类

3

JRE

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

除Sun Micro Systems之外,其他公司也积极发布JVM的实现。

enter image description here

JDK

JDK代表Java开发工具包,它在物理上存在。它包含JRE和开发工具。

enter image description here


文本和图形的信息都已经在其他早期的答案中提供。 - Kalle Richter

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