C#中等效的JVM是什么?

时间:2010-01-11 13:44:05

标签: c# java

JVM需要运行java应用程序。

我想知道c#中是否有任何等价物?

如果是的话是什么?

3 个答案:

答案 0 :(得分:41)

Common Language Runtime或CLR。这是运行时不仅支持C#,还支持其他.NET语言,如Visual Basic.NET。通常,每种语言都会向开发人员公开CLR上可用功能的子集(例如,C#通常不支持纯粹通过返回类型的方法重载,但CLR支持这种方法。)

正如Java编译为字节码一样,C#和其他.NET语言也会编译为Microsoft中间语言(MSIL) - 这是揭示完整CLR功能集的唯一语言。

当然,C#是defined purely as a language。没有理由不能 make 在其他运行时运行,或者实际上在解释模式下运行。但“等效”的“JVM”(暗示默认值)是CLR。

答案 1 :(得分:4)

您需要使用公共语言运行时(CLR)来运行C#应用程序。

答案 2 :(得分:1)

没有.NET等同于JVM,因为.NET不像Java那样在虚拟沙箱中运行。

Java:来源> Java字节码>由针对特定平台编译的JVM解释。

.NET:来源> MSIL>第一次执行MSIL程序集时编译为本机代码。

因此,.NET代码可以编译成MSIL,移动到不同的机器架构,只要某些东西(如Mono)可以读取MSIL并编译成机器代码,它就可以工作。使用Java,代码将始终在JVM中运行沙箱。

Java和.NET具有类似的架构,但在其他方面它们也非常不同。在这种情况下,Java通过定义运行所有Java代码的单个通用虚拟平台来解决平台依赖性,而.NET则将其语言和库定义为独立于平台。

使用Java,唯一可以在特定平台上合法提供JVM的人是Oracle / Sun / Java。使用.NET,任何人都可以决定在给定平台上部分或全部实现CLR版本。