即使JDK包含JRE,JRE的需求是啥? [复制]

Posted

技术标签:

【中文标题】即使JDK包含JRE,JRE的需求是啥? [复制]【英文标题】:What is the need of JRE even though JDK contains JRE? [duplicate]即使JDK包含JRE,JRE的需求是什么? [复制] 【发布时间】:2018-02-12 22:51:40 【问题描述】:

对不起,如果这些是非常愚蠢的问题 bcz 我是 java 新手。 JDK内部包含JRE,如果它是一个独立的应用程序,那么JRE需要什么。

【问题讨论】:

一个词:生产 因为普通终端用户不需要JDK,只需要JRE。 JDK中有JRE的原因是很多SDK工具都是Java程序,需要JVM(JRE)来运行。 当JDK bin 目录已经包含一个JRE 时,为什么JDK 安装包含一个单独的JRE 安装?是我的问题和补充,我开发了一个简单的 java 独立应用程序,如果类路径中同时存在 JDK 和 JRE,则工作正常,如果我删除 JRE,即使 JDK 内部包含 JRE 并且我正在运行,它也不起作用机器也是。 if i remove JRE it is not working,可能是因为卸载从PATH 环境变量中删除了二进制文件的路径。卸载所有Java,只安装JDK,它应该可以工作。 【参考方案1】:

不是每个人都想构建 Java 应用程序(这是 JDK)。许多人只想运行它们(这是 JRE),例如获取 JAR 文件的最终用户。

例如:在我的国家,电报税是通过 Java 应用程序完成的。用户需要 JRE 来运行程序(他们可以在其中填写和提交表单),而不是整个 JDK。

编辑:根据 OP 的 cmets,真正的问题是为什么 JDK 包含一个额外的 JRE。我做了一些研究,发现Oracle's explanation:

私有与公共 JRE

安装 JDK 还会安装私有 JRE 和可选的公共副本。

私有 JRE 是运行 JDK 中包含的工具所必需的。它没有注册表设置,完全包含在 jre 目录中(通常位于 C:\Program Files\jdk1.7.0\jre),其位置只有 JDK 知道。

另一方面,public JRE 可以被其他 Java 应用程序使用,包含在 JDK 之外(通常位于 C:\Program Files\Java\jre1.7.0),注册到Windows 注册表(位于 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft),可以使用“添加/删除程序”删除,可以在浏览器中注册,并且可以将 java.exe 文件复制到 Windows 系统目录(这将使其成为默认系统 Java平台)。

【讨论】:

是的,先生绝对同意你的观点,但只是说我只开发了一个独立的应用程序,我只想使用这些情况,只有 JDK 就足够了? JDK 包含 JRE JDK 安装会询问您是否还要安装 JRE(默认为是)。但是,即使您拒绝,JDK bin 目录中仍然有一个 JRE,即使您没有实际安装 JRE,您仍然可以运行您的 Java 应用程序。那么将 JRE 与 JDK 一起安装有什么用呢? (我认为这就是 OP 想知道的?) 也许有一个约定(在开发人员工具之外),JRE 应该位于“.../jre_VERSION/”目录中。 我找到了 Oracle 的解释,请参阅我编辑的答案。

以上是关于即使JDK包含JRE,JRE的需求是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

jdk和jre 7中的jre有啥区别? [复制]

在部署任何 Web 应用程序时,JDK 在应用程序服务器中的作用是啥? [复制]

JRE和JDK

Idea中文输入问题2

JRE,JDK,JVM的区别

是啥导致我的 servlet 在运行时出现“此驱动程序不支持 Java 运行时环境 (JRE) 1.7 版...”? [复制]