除了 javac 或 Microsoft 的 .Net 编译器之外,还有哪些针对 JVM 或 CLR 的可用编译器? [已关闭]

问题描述 投票:0回答:4

除了 javac 或 Microsoft 的 .Net 编译器之外,还有哪些针对 JVM 或 CLR 的可用编译器?为什么我们没有针对 JVM 或 CLR 的流行语言(如 C、C++)的编译器?

.net compilation jvm clr
4个回答
3
投票

维基百科对此有很好的信息:

为什么我们没有针对 JVM 或 CLR 的流行语言(如 C、C++)的编译器?

嗯,有 C++/CLI。链接:


3
投票

说到 .NET,有 mono

fsf 有一个 Java 编译器,作为 GCC 的一部分。

至于为什么没有现有的编译器从 C/C++ 编译到 JVM/CLR - 不确定是不是这样,但除了内存模型有很大不同之外,您需要记住这些语言也部分由附带的库(例如 libc) - 这些库都不小,也需要转换,这也不是一个小壮举。


1
投票

有很多编译器可以编译为字节码,特别是在Java世界中,字节码水平非常高,因此为其编写编译器相对容易。

对于 C 来说,问题在于编译后的程序所需的机器抽象水平比 JVM 提供的水平要低。 例如。为了使指针算术能够工作,你必须有一个大的内存块来放置所有的东西,这违背了 Java 的世界观,即许多独立的对象。 但是这是可以做到的。

NestedVM

通过使用自定义运行时库将 C 程序编译到 MIPS-CPU 来解决这个问题。 然后生成的代码被直接解释或解释为字节代码。


0
投票

http://www.remobjects.com/oxygene/

微软确实有针对 CLR 的 VC++ 编译器,但那是 C++ (C++/CLR) 的扩展。因此,没有人尝试为 JVM 定制 C++(据我所知)。

C 不是面向对象的语言,因此除非经过大量定制(如 C++/CLR),否则它不适合 JVM 或 CLR。

© www.soinside.com 2019 - 2024. All rights reserved.