Proyecto Mono
Mono es el nombre de un proyecto de código abierto impulsado por Novell para crear un grupo de herramientas libres, basadas en GNU/Linux y compatibles con .NET según lo especificado por el ECMA.
Mono posee importantes componentes útiles para desarrollar software:
- Una máquina virtual de lenguaje común de infraestructura (CLI) que contiene un cargador de clases, un compilador en tiempo de ejecución (JIT), y unas rutinas de recolección de memoria.
- Una biblioteca de clases que puede funcionar en cualquier lenguaje que funcione en el CLR (Common Language Runtime).
- Un compilador para el lenguaje C#, MonoBasic (la versión para mono de Visual Basic), Java y Python.
- El CLR y el Sistema de tipos común (CTS) permite que la aplicación y las bibliotecas sean escritas en una amplia variedad de lenguajes diferentes que compilen para “byte code”
- Esto significa por ejemplo, que si defines una clase que haga una manipulación algebraica en C#, esa clase puede ser reutilizada en cualquier lenguaje que soporte el “CLI”. Puede crear una clase en C#, una subclase en C++ e instanciar esa clase en un programa en Eiffel.
- Un sistema de objetos único, sistema de hilos, bibliotecas de clases y sistema recolector de memoria pueden ser compartidos por todos estos lenguajes.
- Es un proyecto independiente de la plataforma. Actualmente Mono corre sobre Linux, FreeBSD, UNIX, Mac OS X, Solaris y plataformas Windows.
Existe un proyecto similar, llamado Portable.NET, es parte del proyecto dotGNU.
Tabla de contenidos[ocultar] |
//
Historia [editar]
Tan pronto como Microsoft publica los documentos que hablan de la arquitectura .NET en diciembre de 2000, Miguel de Icaza (Co-fundador de la empresa Ximian, fundador y presidente de la GNOME Foundation) comienza a interesarse en ellos.
GNOME siempre habÃa luchado por proporcionar fa
cilidades al programador y una de las caracterÃsticas más conocidas es que existen multitud de bindings (adaptadores) para poder utilizar cualquier lenguaje para desarrollar aplicaciones. Pero la elaboración de dichos bindings era tremendamente laboriosa y cada vez que se realizaba un cambio en la interfaz original, era necesario cambiar todos y cada uno de los bindings.
Para intentar mejorar y facilitar la reutilización de código se realizó una implementación de componentes utilizando CORBA llamada Bonobo. Pero tampoco ha tenido éxito ya que era necesario que todo el mundo utilizase esa caracterÃstica y eso no fue asÃ. Por tanto, con .NET se abre una nueva puerta para conseguir hacer de GNOME en un futuro un escritorio mejor y más atractivo tanto para usuarios como para programadores. Con esta tecnologÃa por fin se consigue lo que el proyecto GNOME siempre habÃa buscado, independencia del lenguaje para programar en dicho escritorio.
Miguel de Icaza, luego de analizar el intérprete del byte code, advierte que no existen especificaciones. En febrero de 2001 comienza a indagar por dicha información en las listas de correo de .NET y al mismo tiempo comienza a trabajar en un compilador C# en cooperación con Rhys Weatherley y Jay Freeman, el mismo fue programado en C# como un ejercicio para demostrar su potencia.
En abril de 2001, la ECMA publica el formato de archivos faltante y en GUADEC (6 al 8 de abril de 2001) Icaza demuestra las habilidades de su compilador. Luego de un minucioso análisis, donde claramente se concluye que es posible construir esa tecnologÃa, Ximian reasigna recursos humanos de otros proyectos y crea el equipo Mono. Aspirando a tener una herramienta que fuese un sustituto completo de la tecnologÃa .NET, formaron The Mono Open Source Project, el cual fue anunciado en julio de 2001, en la conferencia de OâReilly.
Pasaron 3 años hasta que el 30 de junio de 2004 Mono 1.0 finalmente fue lanzado.
Componentes [editar]
LibrerÃas de clase [editar]
Las librerÃas de clase proveen un conjunto de facilidades que ayudan al desarrollo de aplicaciones. Son escritas primeramente en C#, pero gracias al lenguaje común de especificación (CLS), las mismas pueden ser invocadas en cualquier otro lenguaje de .NET. Las librerÃas de clase están estructuradas en NamespacesAssemblies. Cuando hablamos del framework de .NET, nos estamos refiriendo primer lugar a las librerÃas de clase. y puestas en producción en librerÃas compartidas denominadas
Namespaces y Assemblies [editar]
Los Namespaces son un mecanismo que permite agrupar lógicamente clases similares en una estructura jerárquica, evitando asà conflictos de nombres. La estructura se implementa utilizando palabras separadas por puntos, donde la palabra de primer nivel más común es System, como System.IO o System.Net.
Los assemblies son el paquete fÃsico de las librerÃas de clase. Son archivos .dll, como por ejemplo las librerÃas de Windows. Ejemplos de librerÃas son mscorlib.dll, System.dll, System.Data.dll.
Los Namespaces por lo general están compuestos por muchos assemblies y un assembly puede estar compuesto de varios archivos.
Lenguaje Común de Infraestructura (CLR) [editar]
El lenguaje común de infraestructura o más comúnmente llamado Common Language Runtime (CLR) es implementado por el ejecutable de Mono. El runtime es utilizado para correr aplicaciones compiladas en .NET. Este lenguaje común de infraestructura está definido en los estándares ECMA y ECMA-335. Para ejecutar una aplicación se deberá invocar el runtime con los parámetros adecuados.
Lenguaje Común de Especificación (CLS) [editar]
Se encuentra especificado en el estándar ECMA-335 y define la interfase con el CLR. Por ejemplo, convenciones sobre el tipo de datos que se utilizará para implementar los enumerados. El compilador Mono genera una imagen que cumple con el CLS, esta imagen está codificada en el denominado Common Intermediate Language (CIL) o Lenguaje Intermedio Común. El runtime de Mono toma dicha imagen y la ejecuta.
MonoDevelop: el IDE de Mono [editar]
MonoDevelop es un Entorno Integrado de Desarrollo gratuito, diseñado primordialmente para C# y otros lenguajes .NET como Nemerle, Boo, y Java (via IKVM.NET). MonoDevelop originalmente fue una adaptación de SharpDevelop para Gtk#, pero desde entonces se ha desarrollado para las necesidades de los desarrolladores de Mono. El IDE incluye manejo de clases, ayuda incorporada, completación de código, Stetic (diseñador de GUI), soporte para proyectos, y un depurador integrado.
Aunque MonoDevelop solo puede ejcutarse en Mac y distintas distribuciones de Linux, no es posible hasta el momento ejecutarlo sobre Windows. Sin embargo, un IDE llamado SharpDevelop facilita la compilación de aplicaciones Mono sobre ambiente Windows pero carece de capacidad para depurar dichas aplicaciones(según las caracterÃsticas de SharpDevelop Version 1.1). Las versiones 2.0 en adelante incorporan un depurador integrado.
MonoDevelop 0.13 es ultima version de MonoDevelop liberada el 22 de Febrero de 2007.
Mono y las patentes de Microsoft [editar]
La implementación de Mono de esos componentes de .NET no sometidos a ECMA para su estandarización ha levantado algunas preocupaciones de la violación de la patente .
Véase también [editar]
- Proyecto Mono Remoting Página en Wikipedia acerca de Remoting sobre el Proyecto Mono.
Enlaces externos [editar]
- Mono-Project.com, Página principal del proyecto, en inglés.
- MonoHispano.es
- MonoDevelop.com, IDE de desarrollo, en inglés.
- Preguntas frecuentes sobre Mono
- Mono Remoting
- SharpDevelop2, IDE de desarrollo para Windows con soporte para compilación con Mono