编者注:这个问题是在2009年提出的,世界在哪里不同。到2022年,标准的开源OpenJDK将只支持jdk。


JDK和JRE有什么区别?

它们的角色是什么,什么时候应该使用其中一个或另一个?


当前回答

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

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

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

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

其他回答

上面的答案(Pablo)是非常正确的。这只是额外的信息。

顾名思义,JRE是一个环境。它基本上是一堆包含java相关文件的目录,即:

bin/ contains Java's executable programs. The most important is java (and for Windows, javaw as well), which launches the JVM. There are some other utilities here as well, such as keytool and policytool. conf/ holds user-editable configuration files for Java experts to play with. lib/ has a large number of supporting files: some .jars, configuration files, property files, fonts, translations, certs, etc. – all the "trimmings" of Java. The most important is modules, a file that contains the .class files of the Java standard library. At a certain level, the Java standard library needs to call into native code. For this purpose, the JRE contains some .dll (Windows) or .dylib (macOS) or .so (Linux) files under bin/ or lib/ with supporting, system-specific native binary code.

JDK也是一组目录。它是JRE的超集,增加了一些功能:

Bin /已经被开发工具放大了。其中最重要的是javac;其他包括jar、javadoc和jshell。 添加了jmods/,用于保存标准库的JMOD文件。这些文件允许标准库与jlink一起使用。

下面是甲骨文的一个简单回应 http://docs.oracle.com/javase/7/docs/technotes/guides/

Java SE运行环境(JRE)

JRE提供了运行用Java编程语言编写的applet和应用程序所需的库、Java虚拟机和其他组件。这个运行时环境可以与应用程序一起重新分发,使它们独立。

Java SE开发套件(JDK)

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

清楚地理解这些术语(JVM、JDK、JRE)对于掌握它们的用法和区别至关重要。

JVM Java虚拟机(JVM)是执行Java字节码的运行时系统。JVM就像一台虚拟计算机,可以执行一组编译好的指令并操作内存位置。当Java编译器编译源代码时,它会在.class文件中生成一组高度优化的指令,称为字节码。JVM解释这些字节码指令,并将它们转换为特定于机器的代码以供执行。

JDK Java开发工具包(JDK)是一个软件开发环境,您可以使用它来开发和执行Java应用程序。它包括JRE和一组编程工具,如Java编译器、解释器、appltviewer和文档查看器。JDK通过Java SE、Java EE或Java ME平台实现。

JRE Java运行时环境(JRE)是JDK的一部分,它包括JVM、核心类和几个支持应用程序开发的库。尽管JRE可以作为JDK的一部分提供,但您也可以单独下载并使用它。

要完全了解,你可以看看我的博客:Jdk Jre Jvm和差异

简单:

JVM是执行Java代码的虚拟机

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

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

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

JDK

JDK是一个工具包,包括开发和运行java应用程序所需的东西。

JDK是用于构建应用程序、组件和小程序的开发环境。

JRE

它包含以编译形式运行Java应用程序所需的所有内容。你不需要任何库和其他东西。你需要的所有东西都编译好了。

JRE不能用于开发,只能用于运行应用程序。