Portabilidad, la gran ventaja de .NET Framework y Mono

.NET y MonoDesde los inicios de la informática, uno de los grandes problemas ha sido la interoperabilidad entre los sistemas operativos y las diferentes arquitecturas de hardware. Esto quiere decir que un programa diseñado para un sistema operativo y un procesador concretos no puede ser ejecutado en nigún otro.

Los programas, independientemente del lenguaje en el que han sido escritos, son compilados en código máquina (código binario), el único lenguaje que es capaz de interpretar el hardware y que es específico para cada tipo de procesador. Además, debido a la complejidad de los sistemas actuales, los programas no pueden comunicarse directamente con la máquina y deben hacerlo a través de las librerías que proporcionan los sistemas operativos. Tomando en cuenta estos dos factores el software resultante solo puede ser ejecutado en máquinas determinadas.

Entonces, ¿Como podríamos construir software que fuera útil en cualquier plataforma? Muy simple, utilizando un lenguaje intermedio común a todos los sistemas operativos que sea convertido a cada arquitectura cuando sea necesario.

.NET Framework y Mono, la versión opensource de .NET Framework, hacen precisamente eso: al compilar un programa que hayamos escrito, no lo hacemos en código máquina, sino en un lenguaje intermedio conocido como CIL (Common Intermediate Language). Este lenguaje universal, al no ser cercano a la máquina, es independiente de ella y se puede utilizar en cualquier ordenador.

Pero, ¿No hemos dicho que los ordenadores solo entienden el código máquina? .NET Framework y Mono son máquinas virtuales cuya función es “traducir” el programa al lenguaje que cada ordenador entiende conforme se va ejecutando. De esta forma, lo único que dependerá de cada plataforma será la máquina virtual pues los programas serán interpretados al vuelo (a esto se le llama compilación Just-In-Time).

Esquema del funcionamiento de un programa en .NET Framework

¿Que ventajas aporta el tener un lenguaje único?

Como dice el título, la Portabilidad. Si yo compilo un programa en CIL podré ejecutarlo en cualquier plataforma que tenga alguna de estas dos máquinas virtuales.

Actualmente existen versiones para cualquier sistema operativo: Windows, GNU/Linux, Mac OS  y para móviles con Windows Mobile o iPhone OS (este último gracias a la plataforma Mono)

Como ejemplo de programa portable tenemos TomBoy, la conocida aplicación de notas para Gnome en GNU/Linux, que al estar escrita en C# podemos instalar no solo en Linux, sino en Windows o Mac OS sin hacer modificaciones en el código fuente. Para utilizarla además necesitamos GTK#, una versión en CIL de las librerías gráficas de Gnome, y que por tanto nos permitiría ejecutar cualquier programa que las utilice en cualquier sistema operativo.


Enlaces:

Anuncios

3 pensamientos en “Portabilidad, la gran ventaja de .NET Framework y Mono

  1. Pingback: Visual Studio 2010. F#, un nuevo lenguaje para .NET « Informatica en Red

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s