协慌网

登录 贡献 社区

JDK 和 JRE 有什么区别?

JDK 和 JRE 有什么区别?
他们的角色是什么,我应该何时使用其中一个?

答案

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 servlet,并且需要使用 JDK 来编译 servlet。我相信还有更多的例子。

上面的答案(由巴勃罗)是非常正确的。这只是其他信息。

顾名思义, JRE是一种环境 。它基本上是一堆带有 Java 相关文件的目录,即:

  • bin/包含 Java 的可执行程序。最重要的是java (以及 Windows, javaw ),它启动了 JVM。这里还有一些其他实用程序,例如keytoolpolicytool
  • conf/保存用户可编辑的配置文件供 Java 专家使用。
  • lib/有大量的支持文件:一些.jar ,配置文件,属性文件,字体,翻译,证书等 - 所有 Java 的 “修剪”。最重要的是modules ,一个包含 Java 标准库的.class文件的文件。
  • 在某种程度上,Java 标准库需要调用本机代码。为此,JRE 在bin/lib/下包含一些.dll (Windows)或.dylib (macOS)或.so (Linux)文件,具有支持的,系统特定的本机二进制代码。

JDK也是一组目录。它是 JRE 的超集,有一些补充:

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

在此输入图像描述

JDK 是 JRE 的超集,包含 JRE 中的所有内容,以及开发 applet 和应用程序所需的编译器和调试器等工具。 JRE 提供库,Java 虚拟机(JVM)和其他组件来运行用 Java 编程语言编写的 applet 和应用程序。