30

有没有办法在 JVM 上运行纯 c 代码?
不通过 JNI 连接,运行,就像你可以通过 JRuby 运行 ruby​​ 代码,或者通过 Rhino 运行 javascript。

如果没有当前的解决方案,您建议我应该怎么做?
显然,我想使用尽可能多的部分解决方案来实现它。

ANTLR 似乎是一个很好的起点,拥有完整的“ANSI C”语法实现......
我应该使用 ANTLR 生成的代码在 JVM 上构建一个“玩具”虚拟机吗?

4

4 回答 4

14

2012-01-26 更新:根据公司网站上的此页面,该产品已被买断,不再可用。

是的。

这是一个生成 JVM 字节码的商业 C 编译器

于 2009-01-07T20:39:57.690 回答
12

还有另外两种可能性,都是开源的:

JPC在 JVM 中模拟整个 x86 pc,并且能够运行 DOS 和 Linux。

NestedVM为 Java 字节码提供二进制翻译。这是通过将 GCC 编译为 MIPS 二进制文件来完成的,然后将其转换为 Java 类文件。因此,任何用 C、C++、Fortran 或 GCC 支持的任何其他语言编写的应用程序都可以在 100% 纯 Java 中运行,而无需更改源代码。

于 2009-03-10T23:18:07.270 回答
6

看来LLJVM也能满足你的要求。

LLJVM:源代码首先由 llvm-gcc 或 clang 等前端编译为 LLVM 中间表示 (IR)。然后将 LLVM IR 转换为 Jasmin 汇编代码,链接到其他 Java 类,然后汇编为 JVM 字节码。

于 2014-04-02T15:33:21.373 回答
6

截至 2016 年,有一个年轻但有前途的选项,称为gcc-bridge。它的目的是利用 JVM 的 R 实现。目标是使用用 C 或 Fortran 编写的 R 库。但是 gcc-bridge 可以作为常规的 maven 插件独立使用。另请参阅gcc-brigde-example

于 2016-06-13T12:42:05.060 回答