Monday, 25 November 2024
MONOGRÁFICO: JAVA - Entorno de desarrollo BlueJ PDF Print E-mail
SOFTWARE - Programación
Written by Alberto Ruiz   
Friday, 21 August 2009 00:00
Article Index
MONOGRÁFICO: JAVA
Entorno de desarrollo jGrasp
Entorno de desarrollo BlueJ
Entorno de desarrollo NetBeans
Conclusiones
All Pages

Entorno de desarrollo BlueJ

BlueJ es un sencillo entorno de programación exclusivamente diseñado para la enseñanza y el aprendizaje de Java. Se trata de un proyecto nacido en el seno de un grupo de investigación universitario integrado por miembros británicos y australianos. Por sus novedosas características, en poco tiempo BlueJ alcanzó una gran popularidad en entornos docentes.

Logo de BlueJ

1. Puesta a punto

Lo primero que haremos será descargar el programa de su página web y proceder a instalarlo. El procedimiento es trivial y, asumiendo que ya tuvieses instalado el JDK, no tendrás que configurar absolutamente nada para empezar a trabajar; pero antes de programar nuestra primera clase, debemos hacer una aclaración previa.

La pantalla principal aparecerá en gris hasta que creemos un proyecto. En BlueJ existe una desafortunada confusión entre el término proyecto, tal y como suele entenderse en los IDEs, y el concepto de paquete, antes explicado. Así, un proyecto BlueJ es igual que un paquete, pero en aras de simplificar se eliminan las líneas de código package, obligatorias según la norma de Java. Si trabajar con paquetes es prioritario para ti, BlueJ no es definitivamente la mejor opción. ¿Significa esto que no podemos utilizar en BlueJ paquetes de clases programados en otros entornos? Existe una forma de incluirlos en nuestro proyecto, Project > Open non BlueJ, pero sin duda no resulta nada intuitivo.

No nos quedemos con este defecto, sin duda uno de los pocos que presenta el entorno: creemos un nuevo proyecto con Project > New Project y ya podremos empezar a trabajar. La pantalla se mostrará así:

Pantalla principal

Como ves, la pantalla principal es tremendamente sencilla. A la izquierda tenemos los botones de nueva clase y compilar; a la derecha la ventana principal, en la que veremos el esquema de clases. Abajo está el banco de objetos, similar al de jGrasp, que se estudiará más adelante. Por último, una barra gris cambiará de color y se pondrá en movimiento cuando haya un programa en ejecución.

Existen dos formas de añadir una clase al proyecto: la primera es crearla nosotros mismos, mediante el botón New Class. La segunda es añadir una clase existente, mediante el menú Edit > Add class from file. Ten en cuenta que esta clase se copiará al directorio del proyecto actual, mientras que en jGrasp esto no ocurría: simplemente se utilizaba la clase desde su ubicación original. Por otra parte no hace falta que te preocupes de guardar las clases, ya que BlueJ lo hará por ti cada vez que compiles o cuando cierres el programa.

El entorno incluye un sencillo asistente para crear clases, cuya misión es proporcionarte un modelo o esqueleto de código sobre el que trabajar. Este borrador será distinto si queremos hacer una clase estándar o, por ejemplo, un applet (aplicación gráfica de ventana). Sin embargo, y ya que la misión es aprender, quizá sea mejor borrar la propuesta y comenzar a trabajar con el editor en blanco.

Primera clase

Las clases que añadimos al proyecto se representan mediante un rectángulo marrón: en la imagen anterior aparece rayado porque aún no lo hemos compilado. Para editar el programa debes hacer doble click con el ratón sobre el rectángulo, apareciendo una nueva ventana de edición. En BlueJ, cada clase se edita en una ventana independiente, lo que puede ser realmente engorroso en programas complejos.

Para compilar nuestras clases tenemos dos opciones: el botón de la izquierda compilará todas las clases del proyecto, mientras que si pulsamos sobre el rectángulo de una clase con el botón derecho del ratón, podremos compilar por separado dicha clase. Este mismo menú nos permitiría también eliminar la clase del proyecto.

¿Y la ejecución? Localiza la clase en la que esté el método principal, pulsa sobre su rectángulo con el botón derecho, y selecciona el método main: verás que la ejecución provoca la aparición de una ventana independiente (sí, otra más), en la que aparecerá el resultado de ejecutar tu programa.

Ejecución de un programa

Sencillo, ¿verdad? Veamos a continuación opciones algo más avanzadas.

2. Sacándole partido

Retomemos un proyecto completo, que involucre distintas clases:

Un proyecto en BlueJ

Observa que los diagramas que ofrece BlueJ no son completos (no muestran los métodos ni los atributos de cada clase): únicamente se contemplan dos tipos de flechas para representar las relaciones entre clase, que caen fuera del alcance de este artículo. Podemos reorganizar los rectángulos en la ventana para que las flechas se vean con claridad. Observa también esa hoja de papel que aparece en la esquina superior izquierda: se trata de un archivo Readme.txt que se incluye por defecto en todos los proyectos. Su misión es únicamente permitir al autor del programa escribir notas sobre el mismo.

Volvamos al proceso de compilación. Cuando sucede un error, BlueJ resaltará la línea errónea y mostrará un mensaje. En ocasiones, un símbolo de interrogación nos permitirá obtener una explicación más detallada del problema (en inglés, eso sí).

Compilando

Al igual que jGrasp, BlueJ no muestra por defecto los números de línea al editar un archivo. Si deseas que aparezcan, accede al menú Tools > Preferences y marca la opción Display line numbers.

A estas alturas ya te habrás dado cuenta de que la sencillez ha guiado el diseño de este entorno: ahora comprobarás lo intuitivo y fácil que resulta interactuar con los objetos sin necesidad de un método principal. Haz click con el botón derecho sobre una clase y tendrás acceso al método constructor (new...). Además del nombre del objeto, es probable que tengas que introducir algunos valores iniciales:

Creando un objeto

A continuación puedes ver el aspecto del banco de trabajo en la parte inferior de la pantalla, después de crear algunos objetos:

Banco de objetos

Sin necesidad de escribir un programa principal, puedes interactuar con estos objetos pulsando sobre ellos con el botón derecho y ejecutando cualquiera de sus métodos:

Utilizando el banco de objetos

También puedes examinar sus atributos mediante la opción Inspect:

Inspeccionando un objeto

A través del menú View > Show Code Pad accederás a una nueva ventana en la que puedes ejecutar expresiones sencillas y también referenciar a los objetos creados en el banco. Recuerda que esta funcionalidad también la ha incorporado jGrasp, como se vio anteriormente.

Code Pad

El banco de objetos es una herramienta muy poderosa y cómoda para probar clases, pero no está pensada para desarrollar complejas ejecuciones. Imagina que tu problema requiere crear 10 objetos distintos, dar valores a sus atributos, y luego interactuar entre ellos: cada vez que detectes un fallo y recompiles, los objetos desaparecerán y tendrás que crearlos de nuevo. Por tanto, el banco de objetos en ningún caso sustituye la necesidad de escribir un método principal que guíe la ejecución del programa.

Una puntualización sobre este método principal: el lenguaje pide que main reciba un conjunto de cadenas de texto como parámetros, para permitir la recepción de datos externos al ejecutar el programa. Además, main debe declararse como método estático (enseguida aclararemos qué es eso). La cabecera del método main debería ser siempre, por tanto, public static void main(String[] args). Sin embargo, para aislar al estudiante de ciertas complejidades, BlueJ admite la siguiente cabecera: public void main(). Ten muy presente que un código como este no compilará en otros entornos de programación, por tanto se recomienda respetar la sintaxis original de Java.

Por ser un método estático, para ejecutar el método main basta (como dijimos anteriormente) con pulsar con el botón derecho sobre la clase principal y escoger el método main:

Método main

Si main fuese un método convencional, tendríamos que crear primero un objeto miTest de la clase Test, para a continuación invocar el método. Ahí está el problema: en programación orientada a objetos tiene sentido crear objetos que representen cuadrados o personas, pero ¿qué representaría un objeto test, o un objeto matemáticas? ¿Puede haber varias matemáticas? Esta es la razón de ser de métodos estáticos como el main de Test, o las funciones matemáticas de la clase Math.

Sólo nos queda repasar las funciones de depuración, que son muy parecidas a las que ofrece jGrasp. Pulsando en la columna izquierda del editor de una clase, marcamos uno o varios puntos de ruptura:

Puntos de ruptura

A continuación ejecutamos el programa y, automáticamente, la ejecución se detendrá al llegar al primer punto de ruptura. En ese momento aparecerá la ventana de depuración y podremos inspeccionar el estado de nuestros objetos:

Depuración en BlueJ

Observa que los botones de control de ejecución se han reducido al mínimo: avanzar una instrucción (step), ejecutar una llamada a un método paso a paso (step into), continuar hasta el siguiente punto de ruptura, y abortar la ejecución.

Ha quedado clara la obsesión de los creadores de BlueJ por simplificar, y en el caso de la depuración no podemos criticar su elección: están las opciones justas, y resultan muy intuitivas para el usuario.

Hay una última ventaja de este entorno que aún no hemos comentado: y es que si bien el manual de referencia está en inglés, el tutorial oficial está traducido al castellano y es accesible desde la página web del programa. Además, y también en castellano, existe un libro de introducción a la programación en Java utilizando precisamente este entorno, lo que puede sin duda facilitar la tarea al profesor.

3. Valoración

Destaquemos para terminar los puntos fuertes y débiles de este entorno:

Puntos fuertes de BlueJ

  • Su sencillez y facilidad de manejo resultan simplemente inigualables
  • Sus funciones de creación visual de objetos están integradas de forma fácil e intuitiva para el usuario
  • Existe documentación oficial en castellano

Puntos débiles de BlueJ

  • Se oculta al alumno la gestión de paquetes
  • Las ventanas independientes resultan algo caóticas cuando se manejan muchos archivos a la vez
  • Los diagramas de clases no aportan ninguna información sobre las mismas, resultando de escasa utilidad


 

Revista INTEFP

Marcadores Sociales

Facebook MySpace Twitter Delicious Google Bookmarks 

Artículos relacionados