7

有谁知道一个好的Java到C交叉编译器?

他们运作良好吗?

4

2 回答 2

5

这与这个问题非常相似,答案可能对您有所帮助:Compiler to translate Java to C

总结: 有一些工具可以解决这个问题(Toba、GCJ 等),但您可能会遇到并非所有 Java 库都被移植的问题。最后,工具可能只完成部分工作,其余部分您必须手动编写代码。

一个好的第一步是将您的 Java 代码转换为仅使用 Java 1.4 中可用的标准库。事实上,为了简化移植过程,您可能希望尽可能多地放弃 java.lang.* 或 java.util.* 包中没有的任何内容。

根据您的代码库的大小,直接重写大量代码实际上可能比依赖工具更容易。 Java 和 C 有很多语法相似之处,但是 C 的直接过程代码与 Java 的面向对象特性之间的不匹配可能会导致问题。 尝试解决此问题时,自动化工具可能会生成几乎无法维护的 C 代码,并且总是存在细微错误的可能性。

2016 年更新:不要这样做,现在不要,永远不要。用于提供此功能的选项尚未得到维护(例如 GCJ),可以说找到精通 Java 的开发人员比 C 更容易。此外,Java 性能不断提高,基线实现往往具有相似的性能。优化后的 C 仍然更快,但每个 JRE 版本的边缘都变得越来越小。

于 2010-02-02T17:11:23.713 回答
4

您能解释一下为什么要将 Java 代码移植到 c 中吗?

如果是为了性能,您可能不会看到太大的改进。Java 是一种垃圾收集语言,目前还没有一种算法可以有效地插入内存分配和释放调用。有很多研究人员试图解决这个问题,他们有一些有趣的解决方案,但我还没有看到可以扩展到大型程序的好的商业产品。您可以查看以前的ISMM会议的会议记录以获取更多信息。

如果您想加快代码速度,我建议您使用分析器并找到热门方法。尝试优化热门方法,如果还不够,请尝试使用 JNI。

于 2010-02-02T16:28:44.093 回答