MonoDevelop versión 1.0: libre y multiplataforma

Existen muchas herramientas creadas para operar sobre un servidor de aplicaciones o bases de datos concreto, pero pocas multipropósito y sin ataduras

MonoDevelop versión 1.0: libre y multiplataforma

16 noviembre 2008

Uno de los productos para desarrollo de software más afamados, Visual Studio, ofrece todo lo necesario para crear proyectos para Windows y la plataforma .NET, ya sean aplicaciones cliente con interfaz gráfica de usuario, aplicaciones web, componentes, servicios que se ejecutan en un servidor, programas para dispositivos móviles, etc. El mayor inconveniente de Visual Studio es que no se trata de una herramienta multiplataforma, sino que está ligada estrechamente a los sistemas operativos de Microsoft.

 

Una alternativa multiplataforma, y que también ofrece un amplio abanico de posibilidades en cuanto a los tipos de proyecto que es posible abordar, es Eclipse. Este potente entorno, inicialmente centrado en el desarrollo para Java, ha ido mejorando con el tiempo, pero su uso no resulta especialmente intuitivo y aprovecharlo conlleva una curva de aprendizaje mayor que en otras herramientas. Sus requerimientos en lo que respecta a recursos, memoria y tiempo de proceso, principalmente, también son superiores a los de la mayoría de productos de este tipo.

 

En un contexto como éste, aún hay espacio para otras alternativas como puede ser MonoDevelop, cuya versión 1.0 se anunció el pasado mes de marzo. El objetivo de este artículo es analizar las características más destacables de esta solución, evaluando su idoneidad como herramienta de desarrollo de propósito general.

 

Opciones de desarrollo

Con su configuración por defecto, sin agregar complementos opcionales, MonoDevelop estará preparado para trabajar con cuatro lenguajes distintos: C, C++, C# y Visual Basic. En realidad, habría que añadir uno más, ya que el entorno también permite escribir aplicaciones simples empleando directamente ILASM, equivalente al lenguaje ensamblador de un microprocesador pero específico para la plataforma .NET.

 

Utilizando cualquiera de los lenguajes es posible crear aplicaciones de consola o bibliotecas conteniendo clases o definiciones de tipos. Las mayores posibilidades, no obstante, se obtienen al elegir C# o Visual Basic como lenguaje, ya que éstos cuentan con capacidades para generar aplicaciones GTK#, con interfaz gráfica de usuario Gnome, y aplicaciones ASP.NET, cuya interfaz es de tipo web.

 

Al iniciar cualquier tipo de solución, el entorno ofrece la oportunidad de activar una serie de funciones adicionales, entre las que se encuentran la generación de un proyecto de empaquetado que facilite la instalación del software, la posibilidad de incluir los elementos necesarios para traducir la interfaz de la aplicación o facilitar la integración con sistemas Unix.

 

Un hecho destacable, especialmente interesante para aquellos casos en los que interesa trasladar aplicaciones existentes en Windows a otros sistemas operativos, es la capacidad de MonoDevelop para abrir proyectos creados con Visual Studio 2005. Muchas veces basta una recompilación para tener el mismo programa en funcionamiento, de manera inmediata.

 

Diseñadores de interfaces

Una de las tareas más laboriosas que puede acometer un desarrollador, si carece de las herramientas adecuadas, es el diseño de una interfaz de usuario, trabajo que habitualmente requiere la mitad o más de todo el código de una aplicación cliente.

 

Por ello, tener a nuestra disposición un programa que facilite esta tarea puede ahorrar mucho tiempo y recursos, reduciendo el coste de un proyecto. Los diseñadores de interfaces gráficas de usuario no son especialmente abundantes en Linux, de ahí que su valor sea aún mayor si cabe.

 

Con el diseñador para GTK#, útil para aplicaciones C# y Visual Basic como se ha indicado antes, es posible componer interfaces de usuario mediante operaciones de arrastrar y soltar y personalizando componentes, todo ello de manera visual, es decir, dejando que sea el diseñador el que genere el código en lugar de escribirlo manualmente.

 

Aunque sin llegar al nivel de sofisticación y flexibilidad de diseñadores como el de Microsoft Visual Studio, lo cierto es que el ofrecido por MonoDevelop cuenta con los elementos apropiados para cumplir esta tarea de forma correcta.

 

El abanico de componentes está formado por una serie de contenedores, que se encargan de distribuir los controles visuales que conformarán la interfaz y los objetos de tipo más habitual: botones de acción y botones de radio, listas simples y combinadas, cuadros de diálogo de uso común, menús de opciones y algunos otros controles más especializados.

 

Las ventanas del proyecto aparecen como formularios sobre los que van arrastrándose los componentes, clasificados en una barra de herramientas. Esos componentes son a continuación personalizados mediante la edición de una serie de propiedades y asociando código a sus eventos. Todas estas acciones se ven facilitadas mediante la ventana Propiedades.

 

Edición de código

Con independencia de cuál sea el lenguaje de programación elegido en cada caso, el editor de código de MonoDevelop ofrece siempre un conjunto homogéneo de características que simplifican de manera considerable esta tarea que, al fin y al cabo, es a la que dedica más tiempo cualquier programador.

 

Como sería de esperar, este editor cuenta con las características habituales en cualquier editor dirigido a escribir código: permite operar con múltiples archivos simultáneamente, reconoce la sintaxis del lenguaje que se esté utilizando diferenciando sus distintos elementos mediante colores, mantiene automáticamente el sangrado por niveles de los bloques de código y contempla múltiples niveles para deshacer/rehacer.

 

Más interesantes son las asistencias dinámicas a la escritura de código, en forma de etiquetas y listas flotantes que se abren en cuanto el editor detecta que va a invocarse a un método o accederse a un miembro de un objeto, ofreciendo la lista de parámetros del método o bien la de propiedades y métodos del objeto.

 

Es una funcionalidad equivalente al IntelliSense de Visual Studio. También es posible obtener información sobre cualquier identificador, en una ventana flotante, sin más tarea que colocar el puntero del ratón sobre el mismo.

 

El editor va analizando el código a medida que se escribe, de forma que es posible corregir muchos errores sin necesidad de llegar a compilar el programa. La línea en que se detecta un error aparece subrayada, colocando el puntero del ratón en ella se obtiene el mensaje informativo sobre el error detectado.

 

Otras opciones útiles son las que permiten cambiar el sangrado de un bloque de líneas, convertirlas en comentarios o generar documentación directamente a partir de los comentarios XML que se hayan introducido en el código. También existen algunas opciones de refactoring.

 

Gestión de proyectos

En cualquier entorno de desarrollo, una de las herramientas fundamentales es la que facilita la gestión de todos los módulos que conforman cada proyecto o solución. Entre esos módulos habrá archivos con código, otros con recursos y quizá también de configuración, existirán referencias a bibliotecas externas y, conjuntamente con ello, una serie de opciones que dirigirán la compilación y obtención del ejecutable final.

 

Desde la ventana Solución es posible administrar múltiples soluciones, compuestas cada una de ellas de uno o más proyectos que, a su vez, contendrían los módulos de código, recursos y referencias de un objetivo concreto. El menú contextual de cada elemento de esa ventana facilita la adición de nuevos objetos, por ejemplo formularios o clases, así como la generación de los proyectos o el acceso a las opciones de configuración.

 

El gestor de proyectos se compone de la anterior ventana y otra llamada Archivos, desde la que es posible navegar por el sistema de archivos para abrir cualquier módulo externo al proyecto que aparece en la ventana Solución.

 

Otro elemento útil es la ventana Clases en la que, de forma jerárquica, se muestran todas las soluciones, sus proyectos y, dentro de éstos, los espacios de nombres y clases que hay en ellos, junto con sus propiedades, métodos y eventos. Además de facilitar la visualización de la estructura de la aplicación, esta herramienta también puede ser utilizada como vía de navegación por el código.

 

En resumen

A las cualidades descritas en los puntos previos habría que añadir que, mediante complementos opcionales que se mencionaron al principio, MonoDevelop puede integrarse con otras herramientas útiles, incluyendo un navegador de bases de datos, soporte para pruebas unitarias o control de código fuente.

 

Teniendo en cuenta que ésta es solamente la versión 1.0, y que se trata de un producto actualmente en constante mejora y evolución, pensamos que MonoDevelop no solamente es ahora una buena opción para el desarrollo de aplicaciones, sino que le auguramos un fructífero futuro.

 

Obtención e instalación

MonoDevelop es un proyecto open source, basado originalmente en un entorno llamado SharpDevelop, que ha ido evolucionando hasta convertirse en una herramienta multilenguaje y que contempla el desarrollo de distintos tipos de proyectos.

 

Se encuentra estrechamente ligado a Mono, la versión de la plataforma .NET para Linux promovida por Novell y Miguel de Icaza. Desde la página de descargas del proyecto MonoDevelop, en www.monodevelop.com/Download, puede obtenerse tanto su código fuente como paquetes precompilados para distintas distribuciones de Linux y Mac OS X. Incluso hay disponibles imágenes de máquina virtual VMware y distribuciones tipo live CD con todo lo necesario para usar MonoDevelop.

 

Si se opta por descargar e instalar el producto desde el paquete de código fuente, es necesario comprobar con anterioridad que se tienen instalados una serie de requisitos: el núcleo o runtime de Mono, el paquete de desarrollo de Mono, el paquete de desarrollo de GTK, etc. En la propia página de descarga se facilita una lista con las dependencias existentes. Los prerrequisitos software se encuentran incluidos en las distintas opciones precompiladas, por lo que resulta rápido y sencillo.

 

De manera opcional, tras la instalación de MonoDevelop, pueden agregarse complementos que extenderán las capacidades del entorno, por ejemplo permitiendo el uso de otros lenguajes de programación o el acceso a bases de datos.