Programación Orientada a Objetos. Curso 10/11

Entornos de ejecución y proyectos en POO


Introducción

Java es un poco más demandante que C o C++ en cuanto a la organización del código. En concreto, el sistema de "un paquete, un directorio" exige tener una cierta estructura de directorios. Y además, cada clase pública tiene que estar en un fichero .java que se llame igual que la clase en sí. Esta es una pequeña guía para empezar entender qué va dónde, y cómo se puede trabajar con ello desde línea de comandos, desde distintas versiones de NetBeans, y con JCreator: los entornos que se pueden encontrar en las aulas de la EPS.

Contenido de esta guía:

Paquetes y directorios

Toda clase pública Java (y todas las clases que componen esta práctica son públicas) debe estar definida dentro de un archivo que tenga el mismo nombre que la clase, y que esté situado en un directorio que corresponda al paquete de la clase. Las clases se asocian a paquetes mediante la sentencia package <nombre_de_paquete>; situada inmediatamente al comienzo de la clase.

Por ejemplo, si un fichero Peon.java incluye la declaración de pertenencia a paquete package es.uam.eps.ajedrez;, el entorno esperará que esté situada en <raiz_del_proyecto>/es/uam/eps/ajedrez/Peon.java. Y si no está ahí, se producirán errores en la compilación. Si no hay ninguna sentencia "package", la clase queda asignada al "paquete por defecto" - es decir, el entorno la buscará en <raiz_del_proyecto>/Peon.java. En general, nunca se deben escribir clases sin paquete.

Los entornos de desarrollo java exigen que se respete este esquema. Para ello deben estar presentes, en el 1er nivel de profundidad de un proyecto, los directorios que representen los paquetes que se van a emplear.

Organización del código

En C y C++ hay "makefiles", que permiten compilar, ejecutar y probar de forma sencilla proyectos de todo tamaño. En el mundo Java ha cobrado fuerza "ant", que cumple el mismo cometido. En general, en todo proyecto se encontrarán los siguientes directorios y ficheros:

Es decir: un "build.xml" es como un "makefile", "ant" es la herramienta que ejecuta un "build.xml" al igual que "make" ejecuta un "makefile", y los directorios build/ y javadoc/ se pueden borrar con total impunidad. Generalmente, basta con ejecutar "ant clean".

Los scripts de "ant" se proporcionarán junto con el código de cada entrega, y en general no habrá que cambiarlos salvo para puntos menores. Es obligatorio entregar un script que funcione junto con cada práctica. El formato de los scripts es bastante fácil de entender (escribirlo desde cero es un pelín más difícil). Hay documentación abundante en http://ant.apache.org/manual/.

Operación desde línea de comandos

En una consola (bajo Windows 2000/XP se pueden abrir consolas con ejecutar->cmd, en Windows 3.1/9x/Me se usa ejecutar->command) hay que situarse en el directorio donde está el script "ant", es decir, "build.xml".

A partir de ahí, para compilar se usa

ant compile

Para ejecutar se usa

ant -Dargs="argumentos" run

Y para limpiar todo lo que no es imprescindible (por ejemplo, antes de enviar la praćtica), basta usar

ant clean

Tanto "compile" como "exec" y "clean" estarán declarados así en el script de compilación incluido con cada entrega. Es decir, no es que estos nombres sean comunes a todos los proyectos que se compilan con "ant" -- es que, en los scripts que entreguemos para las prácticas de POO, van a ser éstos.

Para saber qué está definido en un "build.xml", puedes leerlo (no es más ilegible que un makefile), o bien puedes ejecutar

ant -p

Proyectos con NetBeans 4.x y NetBeans 5

Estas versiones de NetBeans ya usan compilación con "ant"; eso es una ventaja. La desventaja es que lo ponen mucho más difícil para compilar código sin crear un proyecto. Para crearlo, File->New Project->Java project with existing Ant script, y debería aparecer una ventana similar a ésta:

proyecto ant con NB

En la parte de "Location" basta con decir el directorio donde se encuentra el fichero "build.xml". El resto de los campos se deberían rellenar solos. En el siguiente paso, hay que elegir cómo se asocian las acciones de "compilar", "ejecutar" y similares del entorno NetBeans con las definidas por el script ant. Por ejemplo:

asociaciones para acciones del entorno

En el paso 4 (el paso siguiente) se deberá indicar que el código fuente está en el directorio "src". Esto hará que NetBeans lo muestre y compile. En el paso 5 no hace falta hacer nada: el proyecto ya estará preparado para trabajar con él.

Una vez acabada la creación del proyecto, NetBeans crea un directorio "nbproject", al mismo nivel que "src". Mientras este directorio esté presente, no hará falta recrear el proyecto: se podrá abrir con "open project".

Proyectos con NetBeans 3.x

Para añadir los fuentes de la práctica 1 al entorno NetBeans, hay que "montar" un directorio local - aquel que sea inmediatamente superior al  directorio "ajedrez". Una captura de pantalla es la siguiente:


pantallazo de NetBeans

La captura corresponde a un sistema Linux, pero no debe variar mucho bajo Windows.

También se muestra el uso de argumentos en el momento de ejecutar Prueba.java. La solapa "Execution" de la esquina inferior derecha sólo aparece cuando se selecciona una clase ejecutable (tal como Prueba.java). Modificando la propiedad "Arguments" se pueden cambiar los argumentos de ejecución. La salida mostrada es la que cabe esperar para el ejemplo 1 antes de añadir las clases Reina, Alfil, Torre y Caballo.

Proyectos con JCreator

En el entorno JCreator, primero hay que crear un proyecto nuevo (no hay "proyecto por defecto"), y luego añadir ficheros existentes. JCreator ya crea él sólo la carpeta correspondiente a los paquetes que detecte . El proyecto, listo para compilar, debe ser similar al siguiente:

captura de pantalla de JCreator

(C) 2010-2011, Escuela Politécnica Superior, UAM