将SWT应用程序编译为本机的优点和缺点

时间:2011-08-10 19:20:45

标签: java swt native

谁成功地将Java业务项目编译为本机项目(例如使用GCJ或Excelsior JET)并且可以分享利弊?

我想象以下优势:

  • 更快的速度(用户的机器不需要将字节代码编译为本机代码)
  • 破解的可能性较小
  • 不需要单独的Java运行时

以及以下缺点:

  • 需要为每个平台提供特殊构建以支持(但这已经是SWT所必需的)
  • 反射等功能可能不起作用?
  • 更难找到错误(堆栈跟踪怎么样)?

2 个答案:

答案 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个缺点

<强>缺点:

  1. 编译应用程序需要时间,这会增加软件 开发成本。 Java最初使用解释器来运行代码 这更容易开发。
  2. 它没有Java原始调试器来调试您的软件。您 需要使用其他更复杂的GDB。再次, 增加开发成本