gpt4 book ai didi

java - 了解自定义 JRE(Java 中的模块)

转载 作者:行者123 更新时间:2023-12-02 02:18:12 26 4
gpt4 key购买 nike

在 Java 中发布模块功能并创建自定义 JRE 后,我的问题是自定义 JRE 理论上到底会发生什么?

我知道JRE(Java运行时环境)有内部JVM(Java虚拟机)和可以为环境(操作系统和CPU)运行Java字节码的库。那么,如果我们使用 Java 自定义 JRE, guest PC 内部实际发生了什么以及 JVM 在哪里?

JRE That run java code

在 Java 8 中,我们下载 JRE,用户可以使用我们的应用程序,但在模块功能之后,Oracle 的官方 JRE 尚未发布,开发人员必须使用自定义 JRE。那么开发人员如何猜测操作系统或 CPU 架构类型(发送(添加)正确的 JRE)呢?我现在没有使用这个功能,我正在研究它。

我的问题集中在将代码编译为java字节码并将其发送给没有jre的用户之后发生了什么,如果我的应用程序在没有jre的情况下无法启动并且我需要使用自定义jre,我如何知道哪种类型的机器运行我的代码?因为在官方 jre 中,用户下载并使用 java 应用程序,但现在开发人员需要发送自定义 jre,这可能并不适合所有用户。我想如果知道自定义 jre 发生了什么(了解工作流程)可以帮助我使用它。@StephenC 的答案很有帮助,我需要更多详细信息。

最佳答案

我(仍然)不确定我是否理解您真正要问的内容。不过,我会根据我认为你问的问题来回答。

I know a JRE has inside a JVM and libraries that can run Java bytecodes for environment (OS and CPU).

这有点正确,但不完全正确。

JVM 实际上正在运行。当您运行 java 命令时即可获得它。它不是 java 命令本身。

因此,我们不能从字面上说 JVM 位于 JRE“内部”。它是硬件上运行的进程。

So if we use java custom JRE What actually happened internal in guest PC and where it's the JVM?

本质上是一样的。自定义 JRE 包括运行您的应用程序的启动器(可执行文件)。当您运行该启动器时,您将获得一个运行 Java 应用程序的 JVM。

I Java 8 we can download a JRE and users can use it to run our apps.

正确。

but after module feature the Official JRE from oracle not released and the developer have to use custom JRE.

您在这里混淆了两件事:

  1. 确实,Oracle(和 OpenJDK)不提供从 Java 9 开始可下载的(常规)JRE。但是:

    • 没有什么可以阻止您......或您的用户使用 JDK 发行版。
    • 还有其他 Java 供应商/供应商继续以某种形式提供 JRE 发行版。
  2. 您可以使用 jlink 工具创建自定义 JRE。

... so how could developer guess the OS or CPU Architecture types.

如果您要使用 jlink 创建自定义 JRE,则需要为您支持的每个操作系统和 CPU 架构执行此操作。

但如上所述,您仍然可以指示用户安装传统的 JRE 或 JDK,并继续将您的应用程序作为 JAR 文件或安装程序使用,或者...

关于java - 了解自定义 JRE(Java 中的模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66866116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com