除了javac或Microsoft的.Net编译器外,针对JVM或CLR的可用编译器有哪些?

除了javac或Microsoft的.Net编译器外,针对JVM或CLR的可用编译器有哪些?,java,.net,compiler-construction,jvm,clr,Java,.net,Compiler Construction,Jvm,Clr,除了javac或Microsoft的.Net编译器外,针对JVM或CLR的可用编译器有哪些?为什么我们没有像C、C++这样的流行语言编译器,它的目标是JVM或CLR?< P>当.NET出现时, 作为的一部分,具有 至于为什么没有现成的编译器可以从C/C++编译到JVM/CLR-不确定是这样,但除了极为不同的内存模型外,您需要回忆一下,这些语言也部分由附带的库指定,比如libc-它们不小,也需要转换,这也不是一个小成就。说到.NET,就有了 作为的一部分,具有 至于为什么没有现成的编译器可以从C/

除了javac或Microsoft的.Net编译器外,针对JVM或CLR的可用编译器有哪些?为什么我们没有像C、C++这样的流行语言编译器,它的目标是JVM或CLR?

< P>当.NET出现时,

作为的一部分,具有


至于为什么没有现成的编译器可以从C/C++编译到JVM/CLR-不确定是这样,但除了极为不同的内存模型外,您需要回忆一下,这些语言也部分由附带的库指定,比如libc-它们不小,也需要转换,这也不是一个小成就。

说到.NET,就有了

作为的一部分,具有


至于为什么没有现成的编译器可以从C/C++编译到JVM/CLR-不确定是这样,但除了极为不同的内存模型外,您需要回忆一下,这些语言也部分由附带的库指定,比如libc-它们不小,也需要转换,这也不是一个小成就。

RemObjects有用于JVM和.NET的Oxygene编译器,也就是用于Java和.NET的Pascal

<>微软确实有VC++编译器用于CLR,但这是对C++ C++/CLR的扩展。由于这个事实,据我所知,没有人尝试为JVM定制C++。
C不是一种面向对象的语言,因此,除非像C++/CLR那样进行大量定制,否则它不适合JVM或CLR。

RemObjects有用于JVM的Oxygene编译器和用于Java和.NET的.NET又称Pascal编译器

<>微软确实有VC++编译器用于CLR,但这是对C++ C++/CLR的扩展。由于这个事实,据我所知,没有人尝试为JVM定制C++。
C不是一种OO语言,因此除非像C++/CLR那样进行大量定制,否则它不适用于JVM或CLR。

存在大量编译为字节码的编译器,特别是在Java世界,字节码级别非常高,因此为其编写编译器相对容易

对于C语言来说,问题在于编译程序所需的机器抽象级别低于JVM提供的级别。例如,要使指针算法起作用,你必须有一大块内存,所有东西都放在内存中,这与Java将世界视为许多独立对象的观点背道而驰


然而,这是可以做到的。通过将C程序编译到带有自定义运行库的MIPS-CPU来解决此问题。生成的代码然后被直接解释或解释为字节码。

存在大量编译为字节码的编译器,特别是在Java世界中,字节码级别非常高,因此为其编写编译器相对容易

对于C语言来说,问题在于编译程序所需的机器抽象级别低于JVM提供的级别。例如,要使指针算法起作用,你必须有一大块内存,所有东西都放在内存中,这与Java将世界视为许多独立对象的观点背道而驰


然而,这是可以做到的。通过将C程序编译到带有自定义运行库的MIPS-CPU来解决此问题。生成的代码随后被直接解释或解释为字节码。

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

为什么我们不使用像C、C++这样的流行语言编译器来编译JVM或CLR?< /P>? 还有C++/CLI。链接:


Wikipedia在这方面有很好的信息:

为什么我们不使用像C、C++这样的流行语言编译器来编译JVM或CLR?< /P>? 还有C++/CLI。链接:


实际上,已经有人尝试将C编译到JVM中,但我怀疑他们是否成功。手动内存管理和指针算法不适合JVM,即使这样,也需要大量工作才能获得几乎为零的增益。您对发出JVM字节码的C编译器有什么期望?您真的是指只使用编译器,还是对JVM现有的所有解释器都满意?至少会有JRuby和JPython。我认为Clojure和Scala都可以编译成字节码,而不是java。事实上,已经有人尝试将C编译成JVM,但我怀疑他们是否成功。手动内存管理和指针算法不适合JVM,即使这样,也需要大量工作才能获得几乎为零的增益。您对发出JVM字节码的C编译器有什么期望?您真的是指只使用编译器,还是对JVM现有的所有解释器都满意?至少会有JRuby和JPython。我认为Clojure和Scala都编译成字节码,而不是java。