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

需要的建议:有效的Java到C源代码转换器,java,c,reverse-engineering,cross-compiling,Java,C,Reverse Engineering,Cross Compiling,我在谷歌上搜索了一下,但找不到任何好的Java到C源代码转换器 我的问题是: 这可能吗 有没有可靠的Java到C的src转换器可以让我看一下 这是可能的,但非常困难——对于初学者来说,您需要将垃圾收集器与C源集成在一起。有一些项目尝试这样做,例如,但它们不可靠,不再维护。通常你会发现有人在他们的硕士论文中尝试类似的东西,之后很快就被放弃了 如果您这样做是为了加速您的程序,那么不要这样做-与本机编译的代码相比,Java已经相当快了(尽管它倾向于使用更多的内存),翻译后的C代码将无法充分利用C语言。

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

我的问题是:

  • 这可能吗

  • 有没有可靠的Java到C的src转换器可以让我看一下


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


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

    使用
    Java2C
    :从Java到C语言的转换器,特别适用于嵌入式和快速实时应用程序,包括C中类似Java的运行时系统


    您也可以尝试XMLVM,它不会将java源代码转换为C,而是转换为java字节码(我认为它更有用)

    您可以有一个

    可以将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;
    }
    

    Java和C太不一样了。主要是因为它们各自的内存模型。我认为这是不可能的是的,有一个Java到C的源代码转换器:一个人类程序员。(可靠性可能是一个问题。)@Louis,这不是很可靠如果你真的想把Java编译成C,你可以试着用GCJ把Java编译成机器代码,然后分解机器代码,然后(不知怎么的?)把汇编代码转换成C。(很大程度上取决于代码的风格。如果代码足够“C-like”然后,你可以通过一个特别的过滤器和一些手工“抛光”来自动转换。如果编码人员全力以赴地使用Java、OTOH,并创建了各种各样的类和参数化类型,那么你可能会被否决,因为我认为这不会增加太多信息。的确,OP问“这可能吗”,但我认为回答“呃,这真的很难”并没有增加价值。几乎任何事情都是可能的。如果他问这是否可行,那么不,这不可行。没有用于Java-C交叉编译的工业工具这一事实应该足以证明这一点。。。但我还是很好奇。。谢谢大家的意见。。这不是真正的问题,因为可以用C结构近似Java对象。问题是Java是在虚拟机上执行的,而C是在裸机上执行的。。。真的很感谢你的意见……你知道怎么用吗?我找不到任何文档。看起来很复杂,但从我看到的情况来看,它只转换为Javascript、Objective-C或java字节码,而不是类似C的东西(我的用例是创建不需要JRE运行的普通windows可执行文件),它还转换为C代码,甚至嵌入整个JDK