Curso Básico de Java por Juan José Meroño Sánchez - muestra HTML

TOME EN CUENTA: Esta es una vista previa en HTML y algunos elementos como enlaces o números de página pueden ser incorrectos.
Para la versión completa, descargue el libro en PDF, ePub, Kindle

Tema 1: Herramientas de Desarrollo: Eclipse

1.1.- Introducción

Existen multitud de entornos de desarrollo para Java, cada compañía con cierto peso en la tecnología Java dispone del suyo propio, JDeveloper (Oracle), NetBeans (Sun), Eclipse (IBM), etc. Todos son buenos incluso mejores que el propio Eclipse, pero este es sin duda el más ligero y adaptable. Como iremos viendo posteriormente el IDE no es un factor determinante, sólo cuando el desarrollador no es capaz de adaptarse a él y le entorpece su tarea.

En un IDE vamos a buscar que facilite la edición de los archivos, la localización de errores y las tareas generales durante el desarrollo. Debe ser fácil de usar para que los desarrolladores no encuentren dificultades de adaptación, pero lo suficientemente potente como para no necesitar otras herramientas al margen.

1.1.1.- Componentes Eclipse

Vamos a describir brevemente el entorno de desarrollo de Eclipse a través de la siguiente figura:

img1.png

- Zona 1: Menú -

En esta zona se incluye el menú de opciones completo, y algunos botones de acceso directo a determinadas opciones de uso común. Como el resto de las zonas es totalmente configurable por parte del usuario para adaptarla a sus necesidades.

A través de esta Zona conseguimos crear nuevos proyectos, importar o exportar información de nuestros proyectos y cualquier otra opción relativa a la gestión del proyecto y de sus archivos. En otras ocasiones no acudiremos al menú de esta zona puesto que eclipse permite acceder a diferentes opciones de manera más directa mediante los menús contextuales.

- Zona 2: Perspectiva -

En esta zona aparecen de una u otra forma las distintas perspectivas abiertas por el usuario. Una perspectiva es una configuración específica de todas las zonas destinada a ver un proyecto desde un punto de vista determinado.

Por ejemplo, si creamos un proyecto Java, disponemos de la perspectiva “Java” que nos muestra las clases java agrupadas por paquetes, y nos oculta los archivos compilados. Si ese mismo proyecto lo abrimos con la perspectiva de “Recursos” veremos todos los archivos del proyecto incluidos los compilados .class, pero no veremos las clases agrupadas por paquetes.

En definitiva esta zona me va a permitir cambiar de perspectiva dentro de mi proyecto, para visualizar diferentes puntos de vista del mismo proyecto. En algunos casos algunas perspectivas como las de Base de Datos o SVN se alejan algo del proyecto en sí, ya que muestran conexiones a BBDD o Repositorios SVN y no archivos de nuestro proyecto.

Qué se ve y cómo en cada perspectiva es configurable por el usuario, por lo que es interesante conocer que podemos resetear una perspectiva para dejarla como estaba inicialmente.

- Zona 3: Control Proyecto -

En realidad, esta es una genérica, pero que por convención se suele utilizar para navegar por los archivos del proyecto. En esta zona se pueden incluir Vistas de Eclipse. Una vista es una pestaña que muestra cierta información, tenemos multitud de vistas que muestran desde los ficheros contenidos en el proyecto, hasta los errores de compilación, mensajes de consola, monitores de TCP, etc…

Existen tres vistas principalmente empleadas para visualizar los componentes del proyecto: Project Explorer, Package Explorer y Navigator. Las tres muestran los archivos contenidos en el proyecto pero de diferente forma. Por lo que suelen aparecer en diferentes vistas del proyecto.

Como todo en eclipse uno puede incluir más vistas o cambiar las vistas que tiene disponibles en cada zona sin más que utilizar el botón de la parte inferior izquierda del editor o a través del menú de Eclipse. Arrastrando las pestañas podemos colocarlas en la posición de la zona que más nos interese.

- Zona 4: Editor -

Esta es la zona normalmente dedicada a editar el contenido de los archivos del proyecto. Eclipse dispone de diversos editores dependiendo de los plugins que tengamos instalados en el IDE. Generalmente encontraremos editores de texto, pero hay editores gráficos para archivos XML, HTML, JSP, etc.

Normalmente trabajaremos con editores textuales, pero en algunos casos puede resultar muy cómodo tener una representación visual del fichero que estamos editando.

- Zona 5: Propiedades -

Esta es otra zona dedicada a mostrar vistas y que convencionalmente se emplea para situar las vistas dedicadas a visualizar/editar las propiedades de los archivos editados en la zona central.

- Zona 6: Control Ejecución -

Esta es una zona equivalente a la zona 5 pero que se suele emplear para ubicar aquellas vistas relacionadas con el control de la ejecución del proyecto como son las vistas de consola, para ver los log’s de ejecución, vistas de errores, problemas, tareas, etc.

1.1.2.- Espacio de Trabajo

Eclipse utiliza el espacio de trabajo denominado “Workspace”, para agrupar los diferentes proyectos que maneja. Podemos disponer de múltiples Workspaces en un mismo Eclipse, y dentro de estos múltiples proyectos.

Es una forma muy cómoda de mantener separados diversos proyectos en los que se trabaja para que el trabajar con unos no entorpezca a los otros. El desarrollador puede abrir tantas instancias de Eclipse con Workspaces diferentes como desee. Además puede cambiarse de espacio de trabajo en cualquier momento “File -> Switch Worspace”.

1.1.3.- Configuración de Eclipse

Para configurar Eclipse utilizamos la opción “Window -> Preferences”, desde la cuál podemos actuar sobre las configuraciones de Eclipse:

  • General: Opciones generales del entorno, apariencia, worspace, etc.
  • Java: Opciones de compilación, entorno jre instalado, etc.
  • Run/Debug: Opciones relativas a la ejecución, vistas de consola, etc.

Aparecen muchas otras opciones que van a depender de los plugins instalados en el editor, por ejemplo para manejar opciones de servidores, editores XML, Web, opciones para JPA, y un larguísimo etcétera.

1.1.4.- Actualización de Eclipse

Una de las opciones más interesantes de Eclipse es la posibilidad de actualizar y ampliar las funcionalidades del mismo. Podemos ampliar el IDE para incluir perspectivas, vistas, editores, etc, de forma que nos ayude a manejar nuestros proyectos de la forma más adecuada.

Para actualizar eclipse basta con acudir al menú “Help -> Software Updates”. Desde aquí podemos actualizar funcionalidades que tengamos instaladas, o ampliar buscando nuevas. Los desarrolladores de plugins ofrecen URL’s que permiten instalar sus funcionalidades desde esta opción.

Esta es una de las características más interesantes de Eclipse, ya que nos permite tener el IDE minimizado, es decir, manteniendo activas sólo con aquellas funcionalidades que realmente nos interesan, descartando otra serie de funcionalidades que no queramos usar.

En otros entornos se precargan editores visuales Swing para desarrollo de aplicaciones Java en modo escritorio que suelen ser pesadas y que no necesitaremos si desarrollamos web.

1.2.- Artefactos de Desarrollo y Runtime

En este apartado veremos los diferentes elementos que nos ayudan a gestionar un poryecto. En primer lugar para desarrollarlo y después para ejecutarlo y probarlo. La mejor forma de descubrir estos artefactos es hacerlo de forma práctica, y es lo que haremos a lo largo del curso.

1.2.1.- Artefactos de Desarrollo

Son los artefactos empleados en la edición de nuestro proyecto, principalmente los editores de archivos y los de propiedades. Se suelen distribuir en las zonas 3, 4 y 5. El artefacto más importante obviamente es el propio editor de archivos y el explorador que nos permite navegar por los archivos del proyecto.

1.2.2.- Artefactos de Runtime

Son los artefactos empleados para el control de la ejecución. Nos permiten crear un entorno de ejecución, visualizar los log’s, hacer debug de la ejecución, etc. Se suelen ubicar en la zona 6. En el caso del Debug existe una perspectiva entera dedicada a esta tarea, en la que se entremezcla la visión del editor de código con el valor de variables o expresiones durante la ejecución.

1.3.- Ayudando a Eclipse

No siempre un desarrollador está sólo en la gestión de un proyecto y aunque lo esté no tiene porqué gestionarlo de por vida. Surge la necesidad de emplear otras herramientas al margen del propio IDE pero que se integran perfectamente con esta.

1.3.1.- Subversion

Mediante Subversion vamos disponer de un repositorio de control de versiones que podemos gestionar desde el propio IDE para realizar todas las tareas relativas al control de versiones.

El control de versiones nos va a servir para mantener salvaguardado el código y para gestionar el desarrollo entre varios desarrolladores en un mismo proyecto. También nos va a ayudar a liberar versiones de nuestras aplicaciones de forma controlada.

Eclipse dispone de un plugin denominado Subclipse que integra todas las opciones realizables desde el menú contextual “Team”.

1.3.2.- Maven

Esta es una herramienta muy útil para gestionar las dependencias en proyectos grandes. En determinados entornos puede ser suficiente con el uso de subversion, si mantengo una rama con el proyecto de un determinado IDE, cualquier desarrollador que se incorpore al proyecto es capaz de ponerse a funcionar muy rápido, haciendo un checkout de dicha rama y utilizando el mismo IDE.

En otros casos puede ser interesante que se puedan ejecutar todas las tareas del ciclo de vida de un proyecto de forma autónoma. Maven me aporta esto. Mediante ficheros de configuración denominados POM, puedo describir las tareas a ejecutar en cada una de las fases del ciclo de vida de un poryecto (compilación, test, despliegue,…), y qué librerías son necesarias para cada fase.

Maven de forma automática se descarga las librerías exactas que son necesarias y con las que se desarrolló el proyecto de repositorios públicos disponibles en internet.

- Aspecto General POM -

El aspecto que tiene un fichero de configuración de Maven (POM) es como el que muestro a continuación:

img2.png

Los principales apartados que vemos describen nuestro proyecto y sus dependencias:

  • Project: Elemento raíz de cada archivo pom.xml.
  • ModelVersion: Elemento obligatorio, indica la versión del modelo de objeto que el POM está usando.
  • GroupId: Indica el identificador único de la organización o del grupo de elementos creados para el proyecto.
  • ArtifactId: Indica el nombre base único del componente o artefacto primario generado para este proyecto.
  • Name: Indica el nombre de despliegue usado para el proyecto.
  • Version: Indica la versión del componente o artefacto generado por el proyecto.
  • Description: Proporciona una descripción del proyecto.
  • Packaging: Indica el tipo de empaquetamiento que genera por defecto jar.

Las dependencias van a indicar las librerías que son necesarias en cada uno de los pasos del ciclo de vida del proyecto. Por ejemplo, en este caso durante la fase de test, es necesaria la librería (el artefacto) de JUnit en su versión 4.4. Existen otros ámbitos aplicables a las dependencias, compile, provided, runtime, etc. Cada una afecta a si se incluyen en el classpath de cada fase y si deben añadirse al empaquetado final.

Maven buscará esta librería en el repositorio local del desarrollador y si no lo localiza se la descargará de un repositorio remoto según las configuraciones del propio Maven (settings.xml). Si el desarrollador usa la misma librería en varios proyectos sólo tendrá una copia en su repositorio.

Existe un software adicional (Archiva) que permite controlar los accesos a repositorios de librerías, haciendo de proxy para todos los desarrolladores y permitiendo conceder permisos y ejercer cierto control sobre estas descargas de librerías.

- Ciclo de Vida -

Existen 3 ciclos de vida diferentes en Maven, build, clean y site. Buil para construir el proyecto, clean para eliminarlo y site para generar la documentación. El ciclo de vida por defecto es build y aunque existen bastantes fases dentro de este ciclo de vida para un proyecto Maven las principales son:

  • Compile: Ejecutada para compilar los fuentes.
  • Test: Ejecutada para pasar los tests.
  • Package: Ejecutada para empaquetar el proyecto.
  • Deploy: Ejecutada para desplegar el proyecto.

- Herencia -

Los archivos POM permiten herencia, es decir, en un proyecto podemos disponer de un POM general donde se declaren todas las dependencias de cada módulo y POM que hereden de este dónde sólo se indica los id de artefactos. Cambiar la versión de una librería para todo un proyecto es más sencillo de este modo.

- Arquetipos -

Los arquetipos nos van a permitir definir una especie de plantillas de generación que nos crearán un esqueleto de proyecto, para un tipo específico de proyecto. De este modo se simplifica la generación inicial de un proyecto y se unifica su formato.

1.3.3.- Servidor de Integración Contínua

Con un proyecto configurado con Maven, existe la posibilidad de que un ordenador de forma autónoma se descargue un proyecto de un repositorio SVN, lo compile y le pase los test, devolviendo un informe al equipo de desarrollo. Cada vez que se cambie algo en el repositorio, el servidor de integración contínua puede ejecutar el ciclo otra vez. Esto da otra dimensión al desarrollo de test por parte del programador, ya no es un trabajo que implica más trabajo (hacer los test y probarlos), además aporta una forma ágil y rápida de detectar problemas.

Este tipo de herramientas además suelen incorporar otro tipo de herramientas para analizar el código, dando medidas de calidad, código repetido, no usado, generación de documentación y otra serie de valores añadidos a disponer de un repositorio centralizado de código.