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.

monodevelop-web

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.

  1. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
  2. echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
  3. sudo apt-get update
  4. sudo apt-get -y install mono-complete monodevelop
monodevelop-ubuntu

MonoDevelop en Ubuntu 14

En CentOS, Fedora y derivadas, seguimos estos pasos en la consola de comandos:

  1. rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
  2. yum-config-manager --add-repo http://download.mono-project.com/repo/centos/

En openSUSE y SLES

Para estas distribuciones utilizamos los ficheros One-Click

monodevelop-opensuse

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.

monodevelop-002

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..«

monodevelop-004

Usaremos un código de ejemplo, extraído de la propia web.

monodevelop-005

Para probar el código, podemos utilizar la herramienta «Debug«, justo en la parte superior izquierda.

monodevelop-006

Y «voilà!» , ya tenemos nuestra nueva ventana.

Evidentemente esto es un ejemplo muy, pero muy, básico. Así que a jugar!