JDK 和 JRE 有什么区别?

新手上路,请多包涵

编者按:这个问题是在 2009 年提出的,当时世界已经不同了。 2022 年,标准的开源 OpenJDK 将仅支持 JDK。


JDK 和 JRE 有什么区别?

它们的作用是什么?我应该在什么时候使用其中一个?

原文由 i2ijeya 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 722
2 个回答

JREJava 运行时环境。它是运行已编译 Java 程序所需的一切包,包括 Java 虚拟机 (JVM)、Java 类库、 java 命令和其他基础结构。但是,它不能用于创建新程序。

JDKJava Development Kit ,是功能齐全的 Java SDK。它拥有 JRE 拥有的一切,还有编译器 ( javac ) 和工具(如 javadocjdb )。它能够创建和编译程序。

通常,如果您只关心在计算机上运行 Java 程序,您将只安装 JRE。这就是你所需要的。另一方面,如果您打算进行一些 Java 编程,则需要安装 JDK。

有时,即使您不打算在计算机上进行任何 Java 开发,您仍然需要安装 JDK。例如,如果您使用 JSP 部署 Web 应用程序,从技术上讲,您只是在应用程序服务器内运行 Java 程序。那你为什么需要JDK?因为应用服务器会将JSP转成Java servlets,需要使用JDK编译servlets。我相信还有更多的例子。

原文由 Pablo Santa Cruz 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

  • bin/ 包含Java的可执行程序。最重要的是 java (对于 Windows,还有 javaw ),它会启动 JVM。这里还有一些其他实用程序,例如 keytoolpolicytool
  • conf/ 保存供 Java 专家使用的用户可编辑配置文件。
  • lib/ 有大量支持文件:一些 .jar s、配置文件、属性文件、字体、翻译、证书等——所有 Java 的“修饰”。最重要的是 modules ,一个包含 Java 标准库的 .class 文件的文件。
  • 在某种程度上,Java 标准库需要调用本地代码。 For this purpose, the JRE contains some .dll (Windows) or .dylib (macOS) or .so (Linux) files under bin/ or lib/ 带有支持的、系统特定的本机二进制代码。

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

  • bin/ 已使用开发工具进行了扩展。其中最重要的是 javac ;其他包括 jarjavadocjshell
  • jmods/ 添加了标准库的 JMOD 文件。这些文件允许标准库与 jlink 一起使用。

原文由 Carl Smotricz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题