Eclipse
Eclipse es un entorno de desarrollo integrado (IDE) Open Source y extensible. El proyecto se lanzó originalmente en Noviembre de 2001, cuando IBM donó parte del código fuente de Websphere Studio Workbench y formó el "Eclipse Consortium" para controlar el desarrollo continuado de la herramienta.
El objetivo de Eclipse era "desarrollar una plataforma industrial robusta, con todas las características y de calidad industrial para el desarrollo de herramientas altamente integradas". Actualmente, el Eclipse Consortium está enfocado en tres proyectos diferenciados:
-
The Eclipse Project: Este proyecto se subdivide, a su vez, en tres subproyectos: la propia plataforma, el JDT o Java Development Tools y el PDE o Plugin Development Environment. La idea es que diversos fabricantes puedan desarrollar independientemente los componentes de Eclipse bajo unas especificaciones propuestas y que luego se puedan unir en esa misma herramienta.
-
The Eclipse Tools Project: Este proyecto pretende ser un conjunto lo suficientemente amplio de herramientas para la creación de cualquier tipo de contenido, lenguaje, arquitectura, etc. Sin embargo estas herramientas no son más que otra parte del proyecto y son, a su vez, un proyecto en sí mismas.
-
The Eclipse Technology Project: Este proyecto proporciona un canal de comunicación a los desarrolladores Open Source, investigadores, maestros y a cualquiera que quiera participar en la evolución de Eclipse.
La plataforma Eclipse, cuando se combina con el JDT, ofrece muchas de las características que cabría esperar de un IDE de calidad comercial: editor con sintaxis coloreada, compilación incremental, un depurador que tiene en cuenta los threads, un navegador de clases, un controlador de ficheros/proyectos, e interfaces para control de versiones del código fuente, como CVS.
Eclipse también incluye varias características únicas, como la refactorización de código (posibilidad de cambiar el código sin que varíe la funcionalidad del mismo, es decir, renombrado de variables, clases, métodos, mover métodos, etc.), soporte para unidades de test con JUnit, e integración con la herramienta de construcción de Jakarta: Ant.
A pesar del gran número de características estándar, Eclipse se diferencia de los IDEs tradicionales en varias cosas fundamentales. Quizás lo más interesante de Eclipse es que es completamente neutral a la plataforma y al lenguaje. Además de los lenguajes soportados por el Eclipse Consortium (Java, C/C++, Cobol), también hay otros proyectos para añadir a Eclipse el soporte de lenguajes tan diversos como Python, Eiffel, PHP, Ruby y C#.
Con respecto a las plataformas, el Eclipse Consortium proporciona instalaciones binarias para Windows, Linux, Solaris, HP-UX, AIX, QNX, y Mac OS. La mayoría de cosas interesantes que posee Eclipse se centran en la arquitectura de plugins y el API proporcionado por el Plugin Development Environment para ampliarlo. Añadir soporte para un nuevo tipo de editor, una vista, o un lenguaje de programación, es una tarea fácil con el API y los bloques de construcción que proporciona Eclipse.
En la siguiente figura se puede ver una captura de pantalla de la herramienta:
Como se observa en la imagen, Eclipse ofrece distintas secciones para las diferentes funcionalidades que proporciona. Algunas de las más utilizadas son las que se observan:
-
Package explorer: La aplicación se muestra se organizada como una jerarquía de paquetes.
-
Ant: Vista de la herramienta Ant.
-
Problems: Muestra los errores y warnings que suceden al compilar.
-
Editor de texto con sintaxis coloreada.
Existen plugins para crear interfaces gráficas de usuario (GUI) con Eclipse. Uno de estos plugins es Jigloo, el cual puede ser utilizado libremente para desarrollar aplicaciones no comerciales. Este plugin permite realizar GUIs al estilo "Arrastrar y Soltar" (Drag and Drop). En la siguiente figura se muestra una captura de pantalla del Eclipse con el plugin Jigloo en funcionamiento:
Por último, también existe un plugin, el cual puede ser descargado libremente, llamado Omondo que permite generar código a partir de diagramas de clases y viceversa. En la siguiente figura se muestra una captura de pantalla del Eclipse con el plugin Omondo:
Ant
Ant [6] es una herramienta Open Source del proyecto Jakarta de Apache. Ant es una herramienta equivalente a "make", aunque mucho más moderna, principalmente utilizado por los desarrolladores Java (aunque también puede ser utilizado con otros lenguajes).
Entre las ventajas que presenta Ant están:
-
Usa XML como formato de sus ficheros, por lo que no es difícil de entender.
-
Está escrito en Java, por lo cual tenemos las ventajas de la multiplataforma y no hace falta un script para cada sistema operativo.
-
Es fácilmente extensible: Se pueden crear nuevas tareas a nuestro gusto.
-
Es integrable con muchas herramientas (como por ejemplo el IDE Eclipse o el IDE Netbeans).
Ant es una aplicación Java, por lo que para trabajar con ella es necesario tener instalado un JDK. Además, ya que está basada en XML, se necesita un parser XML, que viene incluido en la versión binaria de Ant.
Al igual que make hace uso de un fichero llamado Makefile, Ant usa un fichero llamado build.xml. Los componentes que incluye este fichero [11] son:
-
project: Este es el elemento raíz del fichero XML. Define el nombre del proyecto, el directorio de trabajo, el target por defecto, etc.
-
target: Un objetivo (target) es un conjunto de tareas que se quiere aplicar a la aplicación que se está desarrollando en algún momento. Se puede hacer que unos objetivos dependan de otros, de forma que Ant lo trate automáticamente.
-
task: Un tarea (task) es un código ejecutable que aplicaremos a nuestra aplicación, y que puede contener distintas propiedades (como por ejemplo el classpath).
-
property: Una propiedad (property) es simplemente algún parámetro (en forma de par nombre-valor) que necesitamos para procesar nuestra aplicación, como el nombre del compilador, etc.
Algunas de las tareas que por defecto incluye Ant son:
-
javac: Sirve para compilar uno o más ficheros fuente en Java. Únicamente se compilan los ficheros que no tengan un fichero .class actualizado (es decir, cuando no existe, o cuando existe pero es más antiguo que el fichero fuente).
-
java: La tarea java sirve para ejecutar una aplicación Java. Por defecto, la aplicación se ejecuta en la misma máquina virtual que el propio Ant, aunque se puede indicar que se ejecute en una máquina virtual distinta.
-
javadoc: La tarea javadoc sirve para generar la documentación de los fuentes en formato Javadoc.
-
copy: La tarea copy sirve para copiar ficheros y directorios, igual que cp en Linux o copy en MS-DOS y Windows. Por defecto, sólo se copian ficheros que sean más recientes que el destino o que sean nuevos.
-
delete: La tarea delete sirve para eliminar ficheros y directorios, igual que rm en Linux o delete en MS-DOS y Windows.
-
mkdir: La tarea mkdir sirve para crear un directorio.
-
move: La tarea move sirve mover uno o más ficheros o un directorio, a un nuevo directorio, igual que mv en Linux o move en MS-DOS y Windows. Por defecto, si el destino existe, es sobreescrito. Si la sobreescritura se deshabilita, el origen sólo es movido si es más reciente que el destino, o si éste no existe.
-
chmod: La tarea chmod sirve para cambiar los permisos de acceso de los ficheros. Esta tarea sólo tiene efecto en sistemas de ficheros UNIX, similar al comando chmod.
-
touch: La tarea touch sirve para cambiar la fecha y hora de modificación de un fichero. Por defecto, se asigna la fecha y hora actuales. En caso de que el fichero no exista, lo crea.
-
echo: La tarea echo sirve para mostrar un mensaje en la salida estándar o en un fichero.
-
sleep: La tarea sleep sirve para producir un retardo de duración determinada. No se garantiza en absoluto que el retardo tenga la duración indicado, ni siquiera que llegue a producirse, ya que es una prestación que depende del sistema operativo, de la granularidad de su reloj, de la carga del sistema, etc.
-
exec: La tarea exec sirve para ejecutar comandos de sistema. Es posible indicar un sistema operativo en el que ejecutar el comando. En este caso, el comando sólo se ejecutará si el sistema operativo actual es el indicado.
Como ya hemos dicho, se pueden crear nuevas tareas mediante la plataforma de desarrollo que ofrece Ant. Muchas herramientas, como por ejemplo Axis, incluyen sus propias tareas para Ant.