Un vistazo al Proyecto Mono. Primera Parte
Septiembre 7 de 2.004
Por Manuel Alejandro Cerón Estrada.
El proyecto Mono ha llamado mucho mi atención en los últimos meses. Mono es una implementación libre del Framework de .NET, una idea de Microsoft para facilitar y agilizar el desarrollo de software. Pese a que esta compañía no cuenta con el aprecio de la mayoría de los seguidores del Software Libre y el Open Source, ni tampoco con el mío, creo que hay que aceptar que .NET es una muy buena idea. Los desarrolladores de Mono, liderados por Miguel de Icaza, comenzaron el proyecto con la convicción de que esta tecnología puede potencializar en gran medida el desarrollo de Software Libre.
El objetivo principal de Mono es brindar una plataforma facilite y haga más productivo el desarrollo de software para sistemas operativos libres, especialmente GNU/Linux. Mono también busca ayudar a que GNU/Linux pueda competir mejor en el campo del desarrollo de software. La importancia del Proyecto Mono radica ayuda a combatir algunos de los problemas que tienen el desarrollar software libre actualmente [1]. Es por eso que en esta serie de artículos voy a tratar de hablar de las ventajas que Mono trae para el desarrollo de software libre, especialmente como ayuda a combatir dichos problemas.
Problemas que Mono Soluciona.
Mono ayuda a derribar la barrera de los lenguajes de programación gracias a la Infraestructura Común de Lenguajes (CLI por sus siglas en inglés). La CLI permite que código fuente en cualquier lenguaje de programación sea compilado en un código byte llamado Lenguaje Intermedio Común (CIL), el cual es el mismo para todos los lenguajes de programación. Gracias a esto es posible acceder a funcionalidad creada con un lenguaje desde otro. Por ejemplo, es posible acceder a clases implementadas en C# o Java desde Python o Perl y viceversa. El código CIL es de cierta forma parecido a lo que es el byte-code en Java. El CIL se ejecuta en la máquina de diferentes maneras: con un interprete o máquina virtual, con Compilación Antes de Tiempo (AOT), es decir, compilar el CIL a código máquina primero y luego ejecutar el programa; o usando una Compilación Justo a Tiempo (JIT), en el cual la compilación y la ejecución se van dando al mismo tiempo gracias a avanzadas técnicas de generación de código.
Otra de las ventajas que tiene el hecho de compilar primero a CIL es que, al igual que Java, permite desarrollar binarios independientes de la máquina y del sistema operativo. Gracias a esto es posible crear paquetes que sirvan no solo para las diferentes arquitecturas de hardware en la que se mueve GNU/Linux (x86, Power PC, SPARC, ALPHA, MIPS, etc.), sino también para diferentes sistemas operativos como Windows, MacOS X, *BSD. Esto se constituye en una gran oportunidad para acabar con la falta de aplicaciones de Windows que funcionen en GNU/Linux, lo que ha sido uno de los principales impedimentos por los cuales no se migra de un sistema operativo a otro. Para los programadores de Windows, programar para sistemas tipo Unix siempre ha sido algo difícil y dispendioso. Las empresas tienen que invertir mucho dinero para re-escribir su aplicación y así poder hacer que funcione en Unix, este enorme costo ha hecho que muchos programas se queden sin una versión para GNU/Linux. Con la ayuda de Mono, hacer aplicaciones que funcionen en varios sistemas operativos es tarea fácil. Pero además de eso, Mono ofrece la ventaja de que cuando las aplicaciones es estén ejecutando, tomaran el look and feel del sistema operativo en el que corran. Así por ejemplo, si una aplicación se ejecuta en Windows, tomará la apariencia de cualquier programa de Windows, mientras que si se ejecuta en GNU/Linux tomará la apariencia de cualquier aplicación de GNOME/GTK+.
Además de todo lo anterior, Mono ofrece un enorme, pero consistente, cantidad de librerías de clase que incluyen las funcionalidades de programación más comunes. Mono incluye librerías para acceso a bases de datos, con soporte para casi todos los motores de bases de datos existentes; componentes para aplicaciones Web y WebServices; construcción de Interfaces Gráficas de Usuario (GUI); entre otras. Todo esto se complementa muy bien con la CLI, con lo cual es posible acceder a librería de clase creadas con un lenguaje desde otro y viceversa. Por ejemplo, prácticamente todas las librerías de clase de Mono están implementadas en C#, sin embargo, pueden ser accedidas desde otros lenguajes como Python.
Referencias
[1] Algunas de estas ventajas las mencioné en el articulo Problemas en el desarrollo de Software Libre
El contenido del material publicado por nuestros columnistas es responsabilidad de sus autores.
Para saber más sobre la programación y naturaleza de nuestros artículos y columnas, haga clic aquí.