Programación multiplataforma con MonoDevelop
Imaginaos un sistema que permita de manera sencilla, realizar programas que puedan funcionar en todas la plataformas de escritorio, sin tener que realizar complejos procesos o cambios drásticos de lenguaje. Hablamos del proyecto Mono y de la IDE MonoDevelop.
Un poco de historia sobre MonoDevelop
En el año 2000, justo en la frontera entre milenios, Miguel de Icaza, uno de los creadores de GNOME, se interesó por la documentación emitida por Microsoft, sobre su plataforma .NET De hecho el escritorio que ayudó a crear siempre había facilitado, a la comunidad de programadores, herramientas para utilizar cualquier lenguaje de programación, aunque de manera tediosa. Por lo que pensaban que utilizando .NET podían hacer de GNOME un escritorio mejor. A partir de éste punto Miguel de Icaza y otros programadores empezaron a trabajar con C#. Fue entonces, en 2001, cuando se crea el proyecto Mono. Para crear un sustituto completo de la tecnología .NET Después de varios años, en 2004, la versión 1.0 vio la luz. Actualmente está integrado dentro del proyecto Mono, que estuvo mantenido por Novell, hasta su adquisición por parte de una tercera empresa, llamada Attachmate Corporation. Actualmente está gestionado por Xamarin.
MonoDevelop es un entorno de desarrollo libre y gratuito, diseñado en C# y otros lenguajes .NET, utiliza licencia GPL. Además de lenguajes .NET también trabaja con Python.
Componentes de Mono
- Bibliotecas de clase. Están escritas en C# y proveen un conjunto de funcionalidades para ayudar al desarrollo.
- Espacios de nombres. Permite agrupar lógicamente clases similares en una estructura jerárquica. Se implementa utilizando palabras separadas por puntos.
- Ensamblados. Son el paquete físico de la librería de clase. Son archivos con extensión .dll, igual que las librerías en Windows.
- Lenguaje común de infraestructura. También llamado “Common Lenguage Runtime (CLR)” es implementado por el ejecutable de Mono. El runtime es utilizado para correr aplicaciones compiladas en .NET
- Lenguaje común de especificación. Se encuentra especificado en el estándar ECMA-335 y define la interfaz con el CLR.
Instalación en GNU Linux
Aunque también existen instaladores para Microsoft Windows o MAC OSX, aquí veremos las diferentes maneras de instalación en sistemas GNU Linux.
En Debian, Ubuntu y derivadas, debemos seguir los siguientes pasos, esto es, importar la llave del repositorio, añadir el repositorio y actualizar el sistema.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get -y install mono-complete monodevelop
En CentOS, Fedora y derivadas, seguimos estos pasos en la consola de comandos:
rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
En openSUSE y SLES
Para estas distribuciones utilizamos los ficheros One-Click
Instaladores por distribución
También podemos utilizar los instaladores para cada distribución, están disponibles para Arch Linux, Debian, Gentoo, openSUSE y Ubuntu.
Uso de interfaz
Vamos a ver su funcionamiento instalado en OpenSUSE LEAP 42.1, que he instalado siguiendo las instrucciones de los apartados anteriores.
Desde la sección «Archivo» podemos craer un nueo fichero o bien una nueva solución. A modo de ejemplo vamos a ver como crear una ventana emergente utilizando GTK#, utilizando C#. Lo haremos creando una nueva «Solución..«
Usaremos un código de ejemplo, extraído de la propia web.
Para probar el código, podemos utilizar la herramienta «Debug«, justo en la parte superior izquierda.
Y «voilà!» , ya tenemos nuestra nueva ventana.
Evidentemente esto es un ejemplo muy, pero muy, básico. Así que a jugar!