gpt4 book ai didi

java - 哪些类对于运行 Java VM 是绝对必要的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:23:21 27 4
gpt4 key购买 nike

Java VM 能够启动的最小类子集是什么?

我猜像 Object、String 和 primitves 之类的东西是绝对必需的,因为它们在 VM 的许多部分都是硬连接的。

我对 JVM 和 JDK 之间的依赖关系有多大感兴趣。

我想知道的基本问题是:

If I would decide to distribute a JVM with a different programming language and different standard libraries, how much of the "Java" classes do I have to carry around to make the JVM happy?

最佳答案

找出答案的最好方法是尝试看看;例如使用 java -verbose. 以各种 JVM 托管语言运行最小程序。

但答案很可能是:

  • 特定于 JVM 版本,以及
  • 特定于编程语言。

我还应该指出,您得到的答案不会有任何实际用途(...除非您打算创建一个缩减的 JRE。如果是这种情况,请阅读下面的后续内容.)

Do you know if all of the classes are strictly necessary or does the VM also preload classes which it expects to be used in all cases by applications?

JVM 不会在此基础上预加载内容。相反,它会加载您的代码静态依赖的依赖闭包。根据您的应用程序使用的类,这可能会导致加载实际未使用的类。多年来,Sun 的工程师们做了大量的工作来尝试减少这种影响,但毫无疑问,它仍然会在某种程度上发生。

跟进

从字里行间看,其意图似乎是创建一个精简的 JVM 包来支持其他一些语言的运行时要求。如果是这样,请考虑以下几点:

  • 对于您可以使用 Java vis-a-vis创建缩减版本的操作,存在许可要求。具体来说,Java、JVM 和 JRE 是商标术语,如果您在精简版 JRE 的上下文中使用它们,Oracle 可能 会效仿您。 (我并不是说你不能这样做,但你确实需要自己检查法律方面的问题。)

  • 肯定存在支持问题。例如,您需要跟踪任何相关的 Java/JVM 安全问题和补丁,并根据需要创建新版本的基础平台。

  • 如果您打算为使用新语言的应用程序提供任何调用 Java 库的方法,那么使用精简的 JRE 对某些用户来说可能是一种严重的痛苦。特别是如果您以某种方式打包您的东西,这意味着他们必须使用您精简的 JRE。

  • JRE/JDK 中有一些工具可能对您/您的用户有用。分析器、调试器、JAR 命令等工具。您的 JRE 需要包含运行它们所需的所有类。

最后,对于绝大多数用户而言,100Mb 的下载量并不是什么大问题。如果是,您可以通过销售安装程序 DVD 来赚点钱来支持您的项目。

专注于您真正想在这里做的事情……并将安装程序优化留给您需要优化的生产质量。

关于java - 哪些类对于运行 Java VM 是绝对必要的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120309/

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