java如何在IKVM静态和动态模式之间进行选择?
我正在我的系统中部署一些Java库。NET应用程序。我应该使用ikvmc将Java库转换为DLL,还是应该在运行时使用动态特性进行转换
我希望使用ikvmc可以减少应用程序的初始负载。有没有人有任何经验来验证这一点?另一方面,如果采用动态路线,我的构建过程将相当简单
理论上,预先转换也可以更早地捕获转换错误。然而,我的测试覆盖应该可以缓解这个问题
另外,我认为ikvm可以将动态转换的程序集缓存在磁盘上的某个位置,这样只有第一次加载(可能是安装的一部分)会更慢。不过,我在ikvm文档中没有看到任何迹象表明情况如此
# 1 楼答案
如果性能是您的一个因素,那么您应该将其转换为DLL。时差很大。如果您只有一个小jar文件(一些KB),那么您可以这样做,因为编译时间与大小成线性关系
但保持对
URLClassloader
的单个实例的引用是很重要的。如果您创建了一个新的URLClassloader
,那么它必须一直编译。而且,JIT无法工作,因为您使用的是不断更新的类如果您想知道需要多长时间,请调用
ikvmc yourJarFile.jar
一次。这是您的程序在附加开始时间中需要的时间