2010-01-11 22 views
19

La JVM es necesaria para ejecutar una aplicación Java.¿Cuál es la JVM equivalente en C#?

Quería saber si hay algún equivalente en C#?

En caso afirmativo, ¿qué es?

+9

¿Por qué ustedes subestiman la wikipedia, por cierto? –

Respuesta

39

El Common Language Runtime o CLR. Este es el tiempo de ejecución que admite no solo C# sino también otros lenguajes .NET, como Visual Basic.NET. Normalmente, cada idioma expone a los desarrolladores a un subconjunto de las funciones disponibles en el CLR (por ejemplo, la sobrecarga de métodos puramente por tipo de retorno generalmente no se admite en C#, pero es compatible con CLR).

Al igual que Java compila en bytecode, C# y otros lenguajes .NET se compilan en Microsoft Intermediate Language (MSIL), el único idioma para exponer el conjunto completo de características de CLR.

Por supuesto, C# es defined purely as a language. No hay ninguna razón por la cual no puede ser hecho para funcionar en otros tiempos de ejecución, o de hecho en un modo interpretado. Pero el "equivalente" de "la" JVM (que implica el valor predeterminado) es el CLR.

+1

Eso no es verdad. No necesita el CLR para ejecutar el código C#, * cualquier * tiempo de ejecución compatible con CLI. Además, no todas las implementaciones de C# se compilan en MSIL, en realidad creo que la mayoría se compilan para CIL y algunas para código nativo. De hecho, no todas las implementaciones de C# están compiladas * en absoluto *, creo que hay al menos un intérprete. –

+3

No, mi respuesta es cierta, la otra no. Este es el tiempo de ejecución predeterminado para C#, ya que la JVM es para Java. En realidad, no he dicho que DEBES tener el CLR para ejecutar el código C#, esa no era la pregunta. –

+0

+1 Su comentario, por cierto, es completamente correcto, aparte de eso ... –

4

Debe tener Common Language Runtime (CLR) para ejecutar aplicaciones C#.

+0

La forma en que esto está redactado, esto no es * estrictamente * verdadero - ver el comentario de Jörg sobre mi respuesta y mi edición. –

1

No hay .NET equivalente a la JVM, porque .NET no se ejecuta dentro de una zona de pruebas virtualizada como hace Java.

Java: Fuente> Código de bytes de Java> Intepreted by JVM compilado para una plataforma específica.

.NET: Origen> MSIL> Compilado en código nativo la primera vez que se ejecuta el ensamblado MSIL.

Como tal, el código .NET puede compilarse en MSIL, moverse a una arquitectura de máquina diferente, y siempre que algo (como Mono) pueda leer ese MSIL y compilar a código de máquina, funcionará. Con Java, el código siempre se ejecutará en un espacio aislado dentro de la JVM.

Java y .NET tienen arquitecturas similares, pero también son muy diferentes en otros aspectos. En esta instancia, Java aborda la dependencia de la plataforma mediante la definición de una única plataforma virtual universal en la que se ejecuta todo el código Java, mientras que .NET en su lugar define su idioma y bibliotecas como independientes de la plataforma.

Con Java, las únicas personas que pueden ofrecer legalmente una JVM en una plataforma específica son Oracle/Sun/Java. Con .NET cualquiera puede decidir implementar una versión del CLR en partes o en total en una plataforma determinada.

Cuestiones relacionadas