需要的建议:有效的 Java 到 C 源代码转换器 [关闭]

Posted

技术标签:

【中文标题】需要的建议:有效的 Java 到 C 源代码转换器 [关闭]【英文标题】:Suggestions needed: Effective Java to C source code converter [closed] 【发布时间】:2013-04-01 12:30:07 【问题描述】:

我搜索了一下,但找不到任何好的 Java 到 C 源代码转换器。

我的问题是:

    这可能吗?

    有什么可靠的 Java 到 C 的 src 转换器你能想到我可以看看吗?

【问题讨论】:

Java 和 C 太不一样了。主要是因为它们各自的内存模型。我认为这是不可能做到的 是的,有一个 Java 到 C 源代码转换器:人类程序员。 (不过,可靠性可能是个问题。) @Louis,这不太可靠 如果你真的想把Java编译成C,你可以尝试用GCJ把Java编译成机器码,然后反汇编机器码,然后(不知何故?)转换程序集代码到 C. (很大程度上取决于代码的风格。如果代码足够“类 C”,那么您可以使用临时过滤器和一些手工“抛光”来自动转换。如果编码人员全力以赴 Java、OTOH,并创建了各种类和参数化类型,那么你可能就是 SOL。) 【参考方案1】:

这是可能的,但非常困难 - 对于初学者,您需要将垃圾收集器与您的 C 源代码集成。有一些项目尝试这样做,例如Toba,但它们不可靠且不再维护。通常你会发现有人在他们的硕士论文中尝试这样的事情,之后很快就被放弃了。

如果您这样做是为了加速您的程序,那么请不要这样做 - 与本机编译的代码相比,Java 已经相当快了(尽管它往往会使用更多的内存),而且您的翻译后的 C 代码将无法充分利用 C 语言。

【讨论】:

投反对票,因为我认为这不会增加太多信息。确实,OP 问“这可能吗”,但我认为“呃,这真的很难”的答案不会增加价值。 几乎一切皆有可能。如果他问它是否实用,那么不,它不实用。没有用于 Java-C 交叉编译的工业工具这一事实就足以证明这一点。 这就是我的想法,因为 JAva 是面向对象的,而 C 不是……但很好奇……感谢大家的所有投入……非常感谢 这不是真正的问题,因为您可以使用 C 结构来近似 Java 对象。问题是 Java 是为了在虚拟机上执行而编写的,而 C 是在裸机上执行的。 感谢 Zim Zam...非常感谢您的意见..【参考方案2】:

Universal-transpiler 可以将 Java 程序翻译成其他几种编程语言,包括 C。这个软件仍处于试验阶段,但它已经能够将 Java 的一个子集翻译成 C 和其他几种语言。

例如,这是 Java 中一种可能的输入:

public static int add(int a, int b)
    int i = 0;
    System.out.println("hello");
    return a + b;

...这是翻译器在 C 中的输出:

int add(int a,int b)
    int i=0;
    printf("%s\n","hello");
    return a+b;

【讨论】:

【参考方案3】:

使用Java2C:从 Java 到 C 语言的翻译器,尤其适用于嵌入式和快速实时应用程序,包括 C 中的类 java 运行时系统。

http://sourceforge.net/projects/java2c/

【讨论】:

知道如何使用它吗?我找不到任何文档。【参考方案4】:

您也可以尝试 XMLVM,它不会将 java source 转换为 C,而是 Java 字节码(我相信它更有用)。

你可以有一个look here

【讨论】:

看起来很有趣,但据我所知,它只转换为 javascript、Objective-C 或 java 字节码,而不是 C 之类的东西(我的用例是创建不不需要 JRE 来运行) 它也可以转换成C代码,甚至嵌入整个JDK

以上是关于需要的建议:有效的 Java 到 C 源代码转换器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Java到C交叉编译[关闭]

将存储过程 PL/SQL 转换为 Java

在Scala中转换所有数据框列的有效方法[重复]

将异常的堆栈跟踪转换为 byte[] 数组或 ByteBuffer (Java) 是不是更有效?

分分钟实现C ++到JavaPython的代码转换!Facebook 最新发布的 TransCoder做到了

在c ++中将4个字节转换为float的最快方法