谁成功地将Java业务项目编译为本机项目(例如使用GCJ或Excelsior JET)并且可以分享利弊?
我想象以下优势:
以及以下缺点:
答案 0 :(得分:2)
我使用Excelsior JET编译SWT app to native for Windows。
这是一段时间以前,他们从那时起大大改进了这个工具,但JVM的速度也相应提高了。内存使用情况不是很多,但即使是低端笔记本电脑现在也有GB的内存,虽然它可能令人厌恶我们的节俭感,但如果你的小型GUI应用程序在盒子上至少使用20MB内存并不重要50倍,特别是当你考虑到在这种环境中发展的优势时。
静态编译的主要原因是启动时间和内存使用情况。 JET给了我这些,但是由于长时间的构建周期,由于动态加载而导致缺少类的错误与静态编译冲突(这是我认为他们已经改进了很多)和特定于平台的构建(你必须构建Windows上的Windows发行版)。最终摩尔定律和JVM速度使这些权衡不值得,我放弃了这个构建选项。
FWIW,stacktraces和反射都很好,动态类加载如果你确保编译器知道非静态引用的类。如果你担心反编译,那么混淆器可能会给你足够的里程数。
我对JET以及制造它的人们说的只有好话。如果你需要这样做,JET是一个坚实的产品。
答案 1 :(得分:0)
我能想到2个缺点
<强>缺点:强>