编者按:这个问题是在 2009 年提出的,当时世界已经不同了。 2022 年,标准的开源 OpenJDK 将仅支持 JDK。
JDK 和 JRE 有什么区别?
它们的作用是什么?我应该在什么时候使用其中一个?
原文由 i2ijeya 发布,翻译遵循 CC BY-SA 4.0 许可协议
编者按:这个问题是在 2009 年提出的,当时世界已经不同了。 2022 年,标准的开源 OpenJDK 将仅支持 JDK。
JDK 和 JRE 有什么区别?
它们的作用是什么?我应该在什么时候使用其中一个?
原文由 i2ijeya 发布,翻译遵循 CC BY-SA 4.0 许可协议
上面的答案(Pablo)是非常正确的。这只是附加信息。
顾名思义, JRE 是一个 环境.它基本上是一堆包含 Java 相关文件的目录,即:
bin/
包含Java的可执行程序。最重要的是 java
(对于 Windows,还有 javaw
),它会启动 JVM。这里还有一些其他实用程序,例如 keytool
和 policytool
。conf/
保存供 Java 专家使用的用户可编辑配置文件。lib/
有大量支持文件:一些 .jar
s、配置文件、属性文件、字体、翻译、证书等——所有 Java 的“修饰”。最重要的是 modules
,一个包含 Java 标准库的 .class
文件的文件。.dll
(Windows) or .dylib
(macOS) or .so
(Linux) files under bin/
or lib/
带有支持的、系统特定的本机二进制代码。JDK 也是一组目录。它是 JRE 的超集,增加了一些内容:
bin/
已使用开发工具进行了扩展。其中最重要的是 javac
;其他包括 jar
, javadoc
和 jshell
。jmods/
添加了标准库的 JMOD 文件。这些文件允许标准库与 jlink
一起使用。原文由 Carl Smotricz 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.2k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
2 回答705 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
2 回答1.3k 阅读
JRE 是 Java 运行时环境。它是运行已编译 Java 程序所需的一切包,包括 Java 虚拟机 (JVM)、Java 类库、
java
命令和其他基础结构。但是,它不能用于创建新程序。JDK 是 Java Development Kit ,是功能齐全的 Java SDK。它拥有 JRE 拥有的一切,还有编译器 (
javac
) 和工具(如javadoc
和jdb
)。它能够创建和编译程序。通常,如果您只关心在计算机上运行 Java 程序,您将只安装 JRE。这就是你所需要的。另一方面,如果您打算进行一些 Java 编程,则需要安装 JDK。
有时,即使您不打算在计算机上进行任何 Java 开发,您仍然需要安装 JDK。例如,如果您使用 JSP 部署 Web 应用程序,从技术上讲,您只是在应用程序服务器内运行 Java 程序。那你为什么需要JDK?因为应用服务器会将JSP转成Java servlets,需要使用JDK编译servlets。我相信还有更多的例子。