Se compila al nativo como lo hace Java desde 4.4 KitKat cuando se introdujo ART (tiempo de ejecución avanzado).
Esto no es nada nuevo, parte de la teoría del compilador, para ser una generación y optimización de código más precisa. Tanto CLR (.net common lagnuage runtime) como JVM (máquina virtual java) se detienen en un pseudo-ensamblador de nivel “superior” llamado CIL (lenguaje intermedio común, la gente de MSFT lo llama MSIL, pero el nombre estándar ECMA / ISO es CIL) y el código JavaByte . Esas representaciones se pueden ejecutar en CLR o JVM. ¿Por qué? Porque es más fácil portar máquinas virtuales (CLR y / o JVM) a plataformas diferentes que toda la infraestructura del compilador.
Verifique que LLVM todos estén cambiando los backends a este sistema de compilación porque es modular y puede ser fácilmente portado / reorientado. Incluso agregaron otro nivel de abstracción (nivel inferior) llamado código de bits que es aún más código de ensamblador utilizado en los relojes Apple (y no solo) y se utiliza para optimizar aún más el rendimiento.
- ¿Qué te gusta de iOS7?
- ¿Apple permitirá que Facebook cree una plataforma dentro de iOS?
- ¿Hay algún incentivo para jailbreak iPhones más?
- ¿Qué tan bien debo conocer C # para desarrollar juegos de Android e iOS en Unity?
- ¿Qué cosas solo puedes hacer en Mac OS o Windows que no puedes hacer en Android o iOS que te hacen llevar computadoras portátiles contigo?
¿Por qué se introdujo el ART? La razón principal fue la batería. VM sigue marcando incluso en modo inactivo esperando nuevas instrucciones.
Xamarin tenía tecnología de compilación de AoT (anticipada) hace mucho tiempo en el bolsillo, simplemente no necesitaba usarla en Android. Apple prohibió las máquinas virtuales, por lo que se usó en iOS. Esta tecnología es parte de .net desde el inicio de .net. Había una herramienta llamada ngen.exe que generaba código nativo de CIL (hablo de eso en todas mis charlas / discursos sobre Xamarin y cómo Microsoft desperdició pocas buenas oportunidades).
Compruebe .net Native hoy y cómo funciona la generación de código para las aplicaciones UWP de Windows 10: parte del código se optimiza y genera en Visual Studio, parte de él en AppStore y, finalmente, la última optimización se realiza en el dispositivo durante la instalación, según la arquitectura x86 o ARM …
Entonces, el resultado final. Xamarin compila a nativo, pero esto es una simplificación excesiva, porque hay 2 mundos .net y java en la historia de Xamarin.Android y no es TAN simple …