Para crear aplicaciones con C# es importante entender qué sucede con nuestro código desde el momento en que lo escribimos hasta que finalmente la aplicación se ejecuta. Este proceso se puede entender mediante 4 pasos principales.
Cuando escribimos nuestro código en C# y lo compilamos con .NET, este no se convierte directamente en código máquina. Primero se traduce a un lenguaje intermedio llamado IL (Intermediate Language).
El IL funciona como una especie de lenguaje universal dentro de .NET. Gracias a este paso intermedio, el código no queda ligado directamente a un único sistema operativo o tipo de máquina.
El flujo comienza de esta manera:
Código C# → IL (Intermediate Language)
El código IL es entendido y procesado dentro del entorno de .NET por el CLR (Common Language Runtime).
El CLR puede verse como el administrador o gerente de la aplicación, ya que se encarga de aspectos importantes durante su ejecución, como administrar la memoria y ayudar a que todo funcione correctamente y de forma segura.
Por lo tanto, el CLR es una pieza fundamental del motor de .NET y del proceso que permite ejecutar nuestras aplicaciones.
Antes de que el código pueda ejecutarse directamente en la computadora, entra en juego el JIT (Just-In-Time).
Su función es tomar el código IL y traducirlo al código nativo que entiende la computadora donde se está ejecutando la aplicación.
Se llama Just-In-Time porque realiza esta conversión cuando es necesaria, permitiendo que el código pueda adaptarse al entorno donde se está ejecutando.
El proceso sería:
IL → JIT → Código nativo
Una vez realizada la conversión necesaria, el código está preparado para ejecutarse en el sistema operativo y la aplicación puede arrancar.
De forma simplificada, podemos visualizar todo el proceso así:
Código C# → IL → CLR/JIT → Código nativo → Ejecución