Plataforma .NET a Fondo: Proceso de ejecuci贸n CLR, MSIL y compilador JIT
Aprende c贸mo es que funciona toda la maquinaria de .NET: Sus componentes, compiladores y bibliotecas. S茅 un dev completo 馃槈

Esta entrada es acerca de la base te贸rica que deber谩s tener para ser considerado alguien con pericia en .NET y naturalmente este blog es pragm谩tico, es decir eminentemente pr谩ctico, pero hay cosas que como desarrollador de software debes conocer, y es lo que te convierte de aficionado a profesional. No es muy complicado, s贸lo requiere atenci贸n, as铆 que comencemos cracks!

Aclarando t茅rminos Net Framework, NET Core y .NET a secas

Seguro habr谩s escuchado los t茅rminos .Net Framework, .NET y .Net Core y d茅jame decirte que entiendo tu confusi贸n pero no nos hagamos bolas, aqu铆 lo vas a aprender de una vez por todas.

.NET tiene distintos tipos, formalmente conocidos como Implementaciones .Net Framework, Net Core, .Net, Mono y UWP son implementaciones, m谩s informaci贸n de este t茅rmino aqu铆 馃槈

Microsoft en el a帽o 2002 cre贸 una plataforma de desarrollo de software para su sistema operativo Windows, y le puso el nombre .NET Framework. Esta plataforma permit铆a a los programadores y p煤blico en general desarrollar, correr y desplegar aplicaciones de escritorio, web y m贸viles para el sistema operativo Windows.

.Net Framework tuvo versiones desde la 1.0 hasta la 4.8 (lanzada en 2019) como bien puedes apreciar en esta documentaci贸n oficial y la arquitectura de la plataforma la podemos apreciar en la siguiente imagen:

Fuente: https://es.wikipedia.org/wiki/Microsoft_.NET

En el a帽o 2016 en paralelo con la versi贸n 4.6 de .Net Framework se lanz贸 una nueva implementaci贸n llamada .NET Core con su versi贸n 1.0 y para finales del 2019 se lanz贸 la versi贸n 3.1 de .NET Core.

La siguiente versi贸n de .NET Core iba a ser algo como 4.xx pero para evitar confusiones con .Net Framework, que pare ese entonces ya hab铆a llegado a su fin, Microsoft tom贸 dos decisiones importantes:

  • Saltarse a la versi贸n 5
  • Dejar de llamar .NET Core a la plataforma y llamarla simplemente .NET

Y as铆 llegamos a la versi贸n .NET 5 y luego a .NET 6, la cual a d铆a de hoy es la versi贸n m谩s reciente.

As铆 que cuando decimos .NET nos estamos refiriendo a esta plataforma unificada, que tuvo inicio en su versi贸n 5 y que tuvo como antecesoras a .Net Framework y .Net Core.

Si quieres profundizar en lo nuevo que nos trae .NET 6 en este art铆culo hablo del tema, y si quieres profundizar en el detalle de la evoluci贸n de .Net Framework a .NET Core, esta es tu entrada 馃槈

Definici贸n de .NET

Ahora que tienes los conceptos perfectamente entendidos, entonces vamos a definir qu茅 es .NET

Es una plataforma de desarrollo gratuita, multiplataforma y de c贸digo abierto que permite compilar, ejecutar y desplegar varios tipos de aplicaciones tales como:

  • Aplicaciones de escritorio o desktop
  • Aplicaciones m贸viles en Android e iOS
  • Videojuegos
  • Aplicaciones web
  • Internet of Things IoT
  • Aplicaciones de consola
  • Servicios de windows
  • Machine learning
  • Aplicaciones Serverless
  • Aplicaciones Cloud
  • Aplicaciones para smart TV y smart Watch

Mencionamos que es multiplataforma porque permite crear aplicaciones para distintos sistemas operativos como Windows, macOS, Linux, iOS, Android, tvOS y watchOS

Las aplicaciones desarrolladas pueden funcionar en pr谩cticamente cualquier arquitectura de procesador convencional como x86, x64, ARM32 y ARM64.

Componentes de .NET

La plataforma .NET est谩 conformada por 3 componentes principales:

  • Common language specification (CLS)
  • Base Class Library (BCL) y
  • Common Language Runtime (CLR)

Esto lo podemos notar en el siguiente gr谩fico en el cual resalt茅 cada uno de los componentes:

Common Language Specification (CLS)

CLS es un conjunto de especificaciones y est谩ndares que definen una serie de similitudes en los lenguajes de programaci贸n que los usan esto se hace para generar una interoperabilidad completa.

Esto quiere decir que .NET no s贸lo es agn贸stico del lenguaje de programaci贸n, ya que puedes usar cualquiera que lo soporte sino que tambi茅n garantiza la correcta interacci贸n entre ellos.

M谩s informaci贸n aqu铆.

Base Class Library (BCL)

La biblioteca de clases base es un conjunto de clases que componen el espacio de nombres System y Microsoft.

Su c贸digo fuente es open source y est谩 disponible en https://github.com/dotnet/runtime.

En este gr谩fico podemos apreciar mejor las bibliotecas.

Net Framework Base Class Library
Fuente: https://www.javatpoint.com/net-framework-class-library

Common Language Runtime (CLR)

Es el entorno de ejecuci贸n multiplataforma encargado de ejecutar el c贸digo administrado en la plataforma .NET.

Existe c贸digo administrado y no administrado, los recursos no administrados son aquellos que el entorno de ejecuci贸n .NET no mantiene de forma autom谩tica. Como ejemplo tenemos al manejo de archivos: Un objeto FileStream s铆 es un objeto administrado, sin embargo el identificador de archivo es no administrado, por eso que cuando se deja de usar el objeto FileStream se debe liberar el identificador.

Proceso de ejecuci贸n

El proceso de ejecuci贸n de CLR es el siguiente:

  • Generar lenguaje intermedio (MSIL)
  • Compilar a c贸digo nativo mediante el compilador JIT (Just in time)
  • Ejecutar c贸digo

Todo este proceso con mayor detalle se encuentra en esta documentaci贸n 馃槈

El CLR tiene tambi茅n la responsabilidad de la administraci贸n de memoria autom谩tica mediante el recolector de basura o Garbage collector.

Si hay t茅rminos que quieres investigar m谩s, este glosario tomado de la documentaci贸n oficial de Microsoft te va a servir un mont贸n crack! 馃敟

Nada como tener las cosas claritas, Foto de Dan Dimmock en Unsplash

Si esta entrada te ha ayudado, comp谩rtela crack! 馃挭

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *