JDK文件夹下的jre文件夹和独立的jre文件夹有什么区别?

11
注意:此问题不涉及JDK和JRE之间的区别。 抱歉,我想表达的标题不够清晰。我的意思是想知道这两个文件夹的区别。 C:\Program Files\Java\jdk1.8.0_161\jreC:\Program Files\Java\jre1.8.0_161 细节描述:
我是JAVA新手。我在Windows 10上安装了JDK。当我安装JDK时,有两个步骤。双击jdk-8u161-windows-x64.exe后,如下所示:
1. 步骤1:安装JDK。(在C:\Program Files\Java\jdk1.8.0_161中) 2. 步骤2:安装JRE。(在C:\Program Files\Java\jre1.8.0_161中)
但是,当我打开jdk1.8.0_161文件夹时,我也可以找到一个jre文件夹。
请问C:\Program Files\Java\jdk1.8.0_161\jreC:\Program Files\Java\jre1.8.0_161之间有什么区别?
如果它们是相同的,为什么在安装过程中会安装jre?它们是重复的吗?换句话说,第二步是不必要的吗?

3
JDK文件夹中的JRE是JDK的一部分。你可以拥有JRE但没有JDK,但你不能拥有JDK而没有JRE。 - Stultuske
2
好问题:P 我也曾经问过自己类似的问题,但从没尝试去找出原因 :P 我能说的是,对于开发目的,“独立运行”的JRE是无用的。我从未在我的路径中使用过它,所有我的开发工具都能正常运行。我怀疑它可能与操作系统集成有关,比如让Java控制面板或浏览器查找可用的JRE。 - Adrian Shum
1
请查看以下链接:https://dev59.com/ynI-5IYBdhLWcg3wVWzv - Peter Haddad
我猜你是单独安装了JRE,然后又安装了JDK...所以它创建了两个目录。我猜你可以重新配置IDE来使用“独立”的JRE,但也许一些来自JDK的东西将无法工作-你需要重新配置它,但这会很麻烦...也许这与JVM有关-独立的可以纯粹地运行,而“内部”的则用于JDK。 - xxxvodnikxxx
@JosanSun 哦,你说得对,但是这里也有答案但下面的答案更清晰 - xxxvodnikxxx
显示剩余3条评论
1个回答

6

JDK内部的JRE(也称为私有JRE)位于C:\Program Files\Java\jdk1.8.0_161\jre,由JDK工具使用。而外部的JRE(也称为公共JRE)位于C:\Program Files\Java\jre1.8.0_161,旨在供Java应用程序使用。

私有JRE

  • 包含用于使用attach API的库(attach.dll)
  • 将随JDK一起卸载

公共JRE

  • 在浏览器中注册Java插件和Java Web Start
  • 系统中注册此JRE作为Java应用程序的运行时,Java控制面板等
  • 可单独从JDK中卸载

1
“应该由Java应用程序使用”这句话有点过于强硬。您可以在不出问题的情况下使用JDK中嵌入的JRE运行应用程序(我从未使用过其他任何东西),甚至有些应用程序需要JDK。此外,JDK没有像独立的JRE那样被垃圾软件污染(曾经是这样,但我没有重新检查它是否仍然是这样)。过去,公共JRE需要安装在Windows的引导分区中,这是一个问题。将来,这种区别应该会完全消失。Java 9 JDK没有“jre”文件夹... - Holger
@Holger 我同意你的观点。JRE(除了attach相关的内容)是相同的。但最好在外部开发中只使用在系统中注册过的JRE。如果你混合使用两者,你可能会在错误的地方寻找问题。任何知道区别的人都可以自由选择适合自己的方式。关于JRE安装程序中捆绑的附加软件,我无法发表评论。就像你一样,我总是使用JDK(不是因为捆绑软件,而是为了JDK的部分;-))。 - SubOptimal
@SubOptimal 我很高兴。谢谢您理解我的问题。您给了我想要的答案。我肯定不想知道JDKJRE之间的区别。 - JosanSun

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