Java VM可以启动的最小类子集是什么?
我猜像Object,String和primitves之类的东西是绝对必需的,因为它们在VM的许多部分中都是硬接线的。
我对JVM和JDK之间的依赖关系有多大感兴趣。
我想知道的基本问题是:
最佳答案
找出答案的最佳方法是尝试看看。例如使用java -verbose.
以各种JVM托管语言运行最小程序。
但是答案可能是:
我还应该指出,您得到的答案将没有任何实际用途(...除非您计划创建一个缩减的JRE。如果是这样,请阅读下面的后续内容。)
JVM不会在此基础上预加载事物。相反,它将加载您的代码静态依赖的依赖项关闭。根据您的应用程序使用的类,这可能会导致加载实际上未使用的类。多年来,Sun工程师已经做了很多工作来尝试减少这种影响,但是无疑在某种程度上还是会发生。
跟进
仔细阅读这些内容,似乎旨在创建一个精简的JVM程序包来支持某些其他语言的运行时需求。如果是这样,请考虑以下几点:
最后,对于大量用户而言,下载100Mb并不是一个重要的问题。如果是这样,您可以通过出售安装DVD来赚钱支持您的项目。
专注于您实际上在这里尝试做的事情...,然后将安装程序优化留给您要优化的生产质量。