0

我在我的 .NET 应用程序中部署了一些 Java 库。我应该使用 ikvmc 将 Java 库转换为 DLL,还是应该使用动态功能在运行时进行转换?

我希望使用 ikvmc 会减少应用程序的初始负载。有没有人有任何经验来验证这一点?另一方面,如果我走动态路线,我的构建过程会简单得多。

从理论上讲,前期转换也可以更早地发现转换错误。但是,我的测试覆盖率应该可以缓解这个问题。

另外,我想 ikvm 可以在磁盘上的某个地方缓存动态转换的程序集,这样只有第一次加载(可能是设置的一部分)会更慢。不过,我在 ikvm 文档中没有看到任何内容表明情况确实如此。

4

1 回答 1

0

如果性能对您来说是一个因素,那么您应该将其转换为 DLL。时差非常大。如果您只有一个小 jar 文件(一些 KB),那么您可以这样做,因为编译时间与大小成线性关系。

但重要的是你持有对单个实例的引用URLClassloader。如果你重复创建一个新的URLClassloader,那么它必须永远编译。JIT 也无法工作,因为您使用了新的类。

如果您想查看一次通话需要多长时间ikvmc yourJarFile.jar。这是您的程序需要的额外启动时间。

于 2010-11-01T19:27:29.843 回答