【问题标题】:Java to C/C++, or at least get the Java converted codeJava 到 C/C++,或者至少得到 Java 转换后的代码
【发布时间】:2011-10-31 22:26:48
【问题描述】:

有没有 Java -> C/C++ 转换器?好吧,我希望没有。

但我知道 Java 通过将 Java 字节码转换为操作系统可以使用 JIT 理解的代码来工作。那么有没有办法得到这个“转换后的代码”呢?

谢谢。


感谢 Baltasarq,他让我走上了正确的道路,我开始寻找 Ahead of Time 编译器,令人惊讶的是,我找到了包含在 GCC 中的 GCJ(我认为是最新的?)。它正是我想要的。拿一个Java文件,把它变成一个EXE。但是,一个简单的打印“Hello World”应用程序需要 44 个 DLLS。哦,好吧:D

【问题讨论】:

  • Java 语言很简单,但是它大量使用了 JDK 和第三方应用程序中的库。这是您必须手动转换代码的地方。

标签: java c++ c


【解决方案1】:

但我知道 Java 通过将 Java 字节码转换为操作系统可以使用 JIT 理解的代码来工作。那么有没有办法得到这个“转换后的代码”呢?

您说的是“提前”编译代码,或者至少这是它在 Mono 项目中收到的名称(.NET/C# 的免费实现)。如果您对此感兴趣,可以将代码从 Java 转换为 C#(至少比 C++ 更容易),然后利用此功能。甚至还有一个专门用于此目的的工具:mkbundle

【讨论】:

    【解决方案2】:

    我不知道是否有办法获得发布的 JIT 代码 ~ 它是一种运行时转换,通过代码路径的某些部分在 1000 或 10,000 之后完成 - 我相信可以得到这个“转换后的代码” “!但是您所说的是源代码,无论如何,JVM 在尝试引入 JIT 之前在字节码上运行 1000 或 10,000 次,或者只能在字节码上运行

    在我看来,不知道您的需求在哪里,我认为手动编写代码会更快〜如果我需要一个短循环或其他东西来向某个预兆解释某些东西,我可以手动完成,而不是找到一些工具来去做吧

    实际上有一个作为标准安装一部分的转储程序 ~ 我知道它可以工作,因为我在源文件 cmets 中保存了一些代码

    【讨论】:

      【解决方案3】:

      有没有 Java -> C/C++ 转换器?好吧,我希望没有。

      嗯,有一些项目,但我知道没有一个是生产质量的。大多数情况下,它们会转换为 C,因为 C++ 提供的附加功能与 Java 的功能不太一致。谷歌搜索会给你很多项目。另请参阅此问题:

      Does a Java to C++ converter/tool exist?

      但我知道 Java 的工作原理是将 Java 字节码转换为 操作系统可以使用 JIT 理解。那么有什么办法可以得到这个 “转换后的代码”?

      不,我不知道。理论上,您可以获取 HotSpot 源代码(它作为 OpenJDK 的一部分提供),并插入日志记录语句以转储生成的机器代码。不知道有没有人做过。

      【讨论】:

        猜你喜欢
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-10
        • 2016-04-14
        • 2014-05-27
        • 2015-09-27
        相关资源
        最近更新 更多