JDK附带的JRE和独立JRE有什么区别?

28

JDK 中包含的 JRE (位于 jre 文件夹内) 和独立的 JRE 有何区别?是否存在区别?


你指的是哪个独立的JRE? - Marcus Leon
2
您可以安装JDK(其中包含位于JDK安装位置子文件夹中的JRE),也可以仅安装JRE(即作为单独的下载和安装)。 - Dave
5个回答

25

“独立的JRE”(有时也称为“公共JRE”)通常不包含HotSpot服务器版本。 它还缺少与JDK一起提供的工具(JavaDB、javac、tools.jar等)。

否则,运行时是相同的。 还要注意,JDK可能安装一个或多个JRE。

最后,所有上述说明都是关于Sun的Java安装程序适用于Windows。 其他供应商和平台可能(有时会)有所不同。


3
据我所知,JDK版本的JRE中有更多的调试信息。请查看rt.jar文件的大小。此外还缺少像自动更新之类的内容。 - Tom Hawtin - tackline
2
我想知道JDK的JRE中是否有调试工具,但是当我提到这个问题时,有些人认为我很疯狂。 - Dave
我的JDK(7u6)刚刚安装了两个JRE!一个是独立的(java/jre),另一个在JDK文件夹内(java/jdk../jre)。这让Oracle(或者这里的任何人)很难确定他们所指的“JDK包含的JRE”是哪一个,但很可能是最后一个。 - e-motiv

16

没有区别(除非您有不同版本的JRE)。这里是SUN / Oracle的官方定义:

http://java.sun.com/javase/6/docs/technotes/guides/index.html

JRE和JDK Sun Microsystems提供 JavaTM平台,标准版(JavaTM SE)系列中的两个主要软件产品:

Java SE运行时环境(JRE)

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

Java SE开发工具包(JDK)

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


1
@Kevin,“bn”指的是“独立JRE”和“随JDK提供的JRE”之间没有区别(这是最初的问题)。 - Pratik Bhatt
1
另一个快速问题是:您可以重新分发JDK,还是只能提供JRE? - Dave

2
如果你对独立的JRE和JDK中包含的JRE进行二进制比较,它们是不同的(至少在Windows版本中)。
rt.jar中的类数相等,但出于好奇,我在两者上都运行了“javap”并比较了结果。
我唯一看到的区别是JDK版本在类代码之前有像“Compiled from“ Serializable.java”的行。
我认为这不应该对最终用户产生任何影响,因此这些JRE实际上应该以相同的方式运行。

1
这句话的意思是:JDK是用于开发的,JRE是用于执行的,这两者之间的区别是法律上的。你可以将JRE与产品一起提供。

0

"JDK" 是 Java 开发工具包。JDK 是一组软件,您可以使用它来开发基于 Java 的软件。"JRE" 是 Java 运行时环境。JRE 是 Java 虚拟机的实现,它实际上执行 Java 程序。

通常,每个 JDK 包含一个或多个 JRE,以及各种开发工具,如 Java 源代码编译器、打包和部署工具、调试器、开发库等。


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