Академический Документы
Профессиональный Документы
Культура Документы
SOFTWARE - Programacin
Escrit per Alberto Ruiz
divendres, 21 d'agost de 2009 00:00
ndex d'article
MONOGRFICO: JAVA
Entorno de desarrollo jGrasp
Entorno de desarrollo BlueJ
Entorno de desarrollo NetBeans
Conclusiones
Totes les pgines
Pgina 1 de 5
There are no translations available.
El rey actual de los lenguajes de programacin, Java, se est convirtiendo por mritos propios en el imprescindible protagonista
de todos los cursos, asignaturas y mdulos profesionales que versan sobre iniciacin a la programacin. Pero Java es un
lenguaje orientado a objetos, y esto supone un desafo para todos aquellos que, incluso teniendo gran experiencia en lenguajes
estructurados como Pascal o C, quieren aprenderlo o ensearlo. Las peculiaridades de este tipo de lenguajes han motivado la
aparicin de entornos de programacin especficamente adaptados para su enseanza: este monogrfico te presenta dos de
los ms utilizados ( BlueJ y jGrasp) confrontndolos con un entorno de desarrollo profesional (NetBeans).
En muy poco tiempo aprenders a ponerlos en funcionamiento de forma sencilla, y conocers sus funcionalidades ms
interesantes de cara a la enseanza y el aprendizaje de Java. Al acabar de leer estos artculos estars en condiciones de
comenzar a trabajar y, lo ms importante, tendrs las claves para escoger el entorno de desarrollo que ms se ajuste a tus
necesidades.
1. Introduccin
Hasta hace no demasiados aos, los compiladores se utilizaban introduciendo rdenes escritas en la lnea de comandos. El
proceso no era sencillo: para empezar, el programador tena que preparar el cdigo fuente usando alguno de los rudimentarios
editores de texto existentes; a continuacin abandonaba el editor para ejecutar la llamada al compilador y obtener el cdigo
compilado. Despus sola ser necesario utilizar otra herramienta para el ensamblado del programa. Finalmente, poda probar
(tambin desde la lnea de comandos) el archivo ejecutable: pero ante cualquier error detectado, deba volver a empezar este
proceso.
No es de extraar, por tanto, que poco a poco fuera desarrollndose el concepto de lo que se ha terminado llamando IDE
(Integrated Development Environment o entorno de desarrollo integrado). Como su nombre indica, su objetivo es integrar en
una misma aplicacin las herramientas necesarias para realizar todo el proceso de programacin: edicin, compilacin, revisin
de errores, depuracin, ejecucin.... El resultado es que utilizando un IDE, compilar y ejecutar un programa requiere
nicamente pulsar un botn.
Existen muchsimos entornos para cada lenguaje de programacin, y cada uno de ellos ofrece al usuario unas determinadas
funcionalidades. Escoger uno u otro depender tanto de nuestras necesidades como de lo intuitivo y agradable que resulte
trabajar en uno u otro entorno. Normalmente el programador va probando entornos hasta que encuentra aquel con el que se
encuentra ms cmodo, pero en el caso que nos ocupa (la enseanza de Java) nos interesa ir sobre seguro y escoger un
entorno que ofrezca al alumno sencillez de uso, facilidad para comprender las ideas subyacentes en el proceso de
programacin, y estimulacin para animarse a hacer programas por s mismo. Cualquiera de los tres entornos que se
presentan en este monogrfico ser una buena eleccin de cara a la enseanza del lenguaje.
Antes de empezar, ten en cuenta que un entorno de desarrollo no es ms que una fachada para el proceso de compilacin y
ejecucin de un programa. Eso quiere decir que no basta con tener un IDE instalado en el ordenador para empezar a trabajar:
previamente debemos instalar el compilador, un proceso que en Java suele generar bastante confusin.
En esta primera entrega nos centraremos precisamente en eso: la instalacin del compilador en nuestro equipo. Adems, se
explicarn las particularidades de los lenguajes orientados a objetos que tendremos en cuenta a la hora de escoger nuestro
entorno.
JRE (Java Runtime Environment) es el entorno de ejecucin necesario para interpretar y ejecutar
archivos .class. Es casi seguro que cualquier ordenador que encuentres en el centro de trabajo tendr instalada una
versin (a veces varias) de este complemento.
JDK (Java Development Kit) es el kit de desarrollo, es decir, el compilador para poder crear programas en Java.
Esta ser, por tanto, la opcin que tendremos que escoger en nuestro caso. Ten en cuenta que la instalacin del JDK
ya incluye el entorno de ejecucin, por tanto no tendrs que hacer ninguna instalacin adicional.
Hemos dicho que los entornos de desarrollo requieren tener instalado el compilador. Por ejemplo, si intentas ejecutar BlueJ sin
haber instalado previamente el JDK, obtendrs este mensaje:
Entonces, qu debemos hacer? Si contamos con el consentimiento del resto de usuarios del equipo, lo mejor es
desinstalartodas las versiones existentes de Java y reinstalar nicamente el JDK ms actual. Por ejemplo, en la siguiente
figura conviven dos entornos de ejecucin, uno antiguo (versin 1.4) y otro ms moderno (versin 6 actualizacin 3), as como
un JDK (versin 6, actualizacin 4). No te preocupes demasiado por Java DB: se trata de un aadido para bases de datos que
se instala junto con el JDK. Por tanto, en este caso desinstalaramos los cuatro elementos que empiezan por Java:
A continuacin, accedemos a la pgina oficial de Java dentro de la web de Sun y escogemos la versin SE (Standard Edition)
frente a otras como la versin empresarial (EE):
Ahora nos encontramos en la pgina de descargas de la versin estndar (SE) de Java. Aqu debemos hacer nuevas
elecciones: tenemos el JRE (que como ya hemos visto no nos interesa, pues slo nos servira para ejecutar programas), el JDK
y los paquetes JDK (bundles), que incluyen algn aadido en la misma descarga. Cul escogeremos? Depende. Si tienes
intencin de probar el entorno NetBeans, escoge el lote que lo lleva incluido. En caso contrario, escoge nicamente el JDK. No
te preocupes demasiado por tu eleccin, ya que si ms adelante cambias de idea puedes instalar (o desinstalar) NetBeans sin
problemas.
Como se ve en la imagen, en el momento de escribir este artculo la ltima versin era la 6, actualizacin 14. Para mayor
confusin, 6 es el nmero de la versin de cara al pblico, pero el nmero con el que Sun identifica internamente esta versin
es 1.6, siendo el autntico nombre de este JDK "1.6_14" "1.6.0_14". Conviene estar familiarizado con este detalle: mira de
nuevo las pantallas de error de jGrasp y BlueJ un poco ms arriba. Cuando nos dicen que se requiere JDK 1.5 o superior, se
nos pide haber instalado el JDK 5 o superior. Otro ejemplo: mira ahora la imagen de la ventana Agregar o quitar programas que
mostramos anteriormente. Observa que uno de los dos JREs instalados en este equipo tiene como versin "1.4", lo que
correspondera al nombre de cara al pblico JDK 4.
posible que al intentar ejecutarlo en tu equipo encuentres este crptico mensaje de error: Unsupported major.minor
version. Cmo es posible, si en el centro ejecutaba perfectamente? Se trata de un error muy comn, y la explicacin es la
siguiente: con un JRE moderno puedes ejecutar programas compilados con un JDK antiguo, pero no sucede lo mismo al revs.
Un JRE antiguo no sabr ejecutar programas compilados con un JDK moderno. En nuestro caso de ejemplo, en el equipo de
casa tenamos una versin de Java ms antigua, y eso ha motivado el problema. La solucin? Lo ideal ser instalar en casa
la ltima versin de Java, pero existe una alternativa ms rpida: elimina los archivos compilados (.class) del proyecto para
forzar a tu equipo a recompilar las clases usando el compilador ms antiguo.
Este problema afecta tambin con frecuencia a quienes prefieren trabajar a la antigua usanza, es decir, con la lnea de
comandos. El caso tpico es el siguiente: tenemos instalada la ltima versin del JDK, compilamos el programa pero no
conseguimos hacerlo ejecutar. El motivo es el mismo: tratamos de ejecutar un programa con un JRE obsoleto, seguramente sin
darnos cuenta. El diagnstico es sencillo: ejecuta el comando java -version y sabrs qu versin del JRE ests utilizando:
Si al hacerlo ves una versin antigua (por ejemplo 1.4), ya has detectado el problema. Pero cmo es posible, si instalaste la
ltima versin de Java? Ten en cuenta que algunas aplicaciones (por ejemplo ciertos paquetes del gestor de bases de datos
Oracle) pueden llevar incluido un entorno de ejecucin sin que a veces seamos conscientes de ello, y por llevar instalados ms
tiempo en nuestro equipo, su ruta aparece antes en la variable de sistema PATH. La solucin es sencilla: edita esta variable y
sita al principio del todo la ruta a nuestra ltima versin de Java.
Volviendo a la actualizacin, seguramente ests pensando: puedo realmente actualizar el JRE y el JDK sin perjudicar a otras
personas que utilicen el mismo equipo? La respuesta, siempre que actualicemos a versiones ms modernas, es s; pero
estrictamente hablando debemos matizar esta afirmacin. Como todos los lenguajes Java va evolucionando, y algunas
caractersticas se convierten en obsoletas (deprecated). Es posible que, al cabo de algunas versiones, al intentar compilar un
programa muy antiguo haya alguna sentencia que con la nueva versin provoque un fallo de compilacin. Sin embargo, es
prcticamente imposible que eso ocurra en el nivel en que nos encontramos y adems, incluso en ese caso, lo correcto sera
corregir las escasas lneas que dieran problemas para actualizarlas segn la sintaxis actual del lenguaje. As que no temas
actualizar el JDK: siempre ser una buena idea.
llamado main, que s nos recordar a los lenguajes estructurados; slo que en este caso su misin consistir nicamente en
crear objetos a imagen de la clase (sacarlos a escena) y pedirles que hagan cosas. Es aconsejable incluir este mtodo especial
en una clase aparte con un nombre significativo como Test o Principal, para que el alumno entienda que esa clase no
representa ningn concepto (una figura, una persona) sino que simplemente alberga el mtodo principal.
Una de las grandes ventajas de Java es que las empresas pueden repartir el trabajo de programacin, encargando el
desarrollo de diferentes clases a diferentes personas. La integracin del trabajo es sencilla dado que las clases son cajas
negras: slo necesitas saber qu atributos tiene la clase Cuadrado y qu mtodos posee. Pero por complicado que fuese para
quien lo program, no necesitas saber cmo resolvi el mtodo calcularArea de una figura: te basta con saber que est
disponible.
Y en qu afecta todo esto a nuestra labor docente y al entorno? Veamos algunas conclusiones interesantes:
La fase previa a la programacin en Java es muy creativa: se trata de disear las clases que voy a necesitar, y
modelarlas segn el problema que quiero resolver. Qu es para m un cuadrado? Si mi problema es
trigonomtrico,su atributo ser el lado. Pero en otros contextos quiz necesite conocer el material de que est hecho,
o su color. Algo parecido pasa con los mtodos. Qu voy a querer pedirle a un cuadrado? Quiz que calcule su
rea, o quiz que se dibuje en la pantalla.
Las clases estn pensadas para ser reutilizadas por otras personas distintas a aquella que la program. Para ello es
fundamental documentar nuestro trabajo: el programador, de un vistazo, debe poder saber qu atributos tiene la
clase y de qu mtodos dispone. Existen dos herramientas bsicas para esta misin: la
documentacin JavaDoc (una pgina web estndar en la que se resume todo el contenido de la clase, cuyo uso no
ser cubierto en este artculo) y los diagramas de clases, que muestran para cada clase sus atributos, sus mtodos y
su relacin con otras clases. Dichos diagramas pueden tener este aspecto:
Por tanto, conviene habituar al alumno a comenzar su trabajo diseando las clases sobre el papel utilizando este tipo de
diseos. Ser interesante que el entorno sea capaz de crear por s mismo diagramas a partir del cdigo introducido, para que el
alumno pueda contrastar su idea original con la clase que realmente est programando. Una buena prctica consistir en que
un alumno trate de utilizar una clase programada por otro compaero, disponiendo nicamente del diagrama de clases. Pero
sigamos con las conclusiones:
Frente a los lenguajes estructurados, el programa ms sencillo que utilicemos en Java tendr seguramente un mnimo
de tres o cuatro clases, lo cul requiere que tengamos abiertas un buen nmero de ventanas a la vez. El entorno de
desarrollo debe estar capacitado para permitir manejar cmodamente mltiples archivos abiertos.
Java no es un lenguaje para los impacientes. Para resolver un problema sobre trigonometra debo pasar un tiempo
diseando y programando previamente las clases correspondientes a las figuras; pero hemos dicho que una clase es
como un tipo de datos, y por s misma no hace nada, no puede ejecutarse. Ser al final, cuando ya tenga todas las
clases listas, cuando escriba un programa principal que crear distintos objetos a imagen y semejanza de sus
correspondientes clases, y esos objetos s que harn cosas. Para evitar el desconcierto o aburrimiento del alumno
ante esta situacin, algunos entornos ofrecen una posibilidad didcticamente interesante: una vez programada la
clase Cuadrado, puedo crear grficamente un objeto miCuadrado e interactuar con l, probando as sus mtodos y
observando sus atributos, y todo esto a golpe de ratn, sin necesidad de escribir ningn programa principal.
Puesta a punto: se trata de una gua rpida que te permitir ponerte a trabajar en pocos minutos y compilar tu
1. Puesta a punto
Lo primero que haremos ser acudir a su pgina web y descargar la ltima versin disponible. La instalacin es sencilla y no se
nos preguntar nada durante el proceso; por otra parte, si instalaste el JDK previamente como hemos sugerido, jGrasp lo
detectar automticamente y no tendrs que configurarlo. En cualquier caso y si tuvieras varias versiones de JDK conviviendo
en el equipo, siempre puedes acceder a la opcin Settings > Compiler Settings para cerciorarte de qu JDK ests
utilizando. Es el momento de arrancar el programa:
La pantalla principal est dividida en tres partes, que pueden redimensionarse en cualquier momento segn nos interese:
A la izquierda encontrars el explorador de archivos, donde podrs seleccionar la clase que quieres editar. Ms
adelante vers que en esta seccin aparece tambin la ventana de proyecto, donde podrs ver todas las clases
pertenecientes al proyecto en el que ests trabajando. Las pestaas inferiores permiten reutilizar esta ventana para
otros usos: la depuracin y el banco de objetos, que sern explicados despus.
Abajo tenemos la ventana de mensajes: jGrasp se comunicar con nosotros a travs de este espacio, indicndonos los
errores de compilacin que vayan surgiendo segn trabajamos. Cuando nuestro programa est listo y queramos
ejecutarlo, en esta ventana veremos tambin el resultado de la ejecucin.
La parte ms amplia es el rea de edicin, donde modificaremos el cdigo de nuestro programa.
Es posible que no te satisfaga la esttica del entorno de trabajo, y es que ste no es sin duda el punto fuerte de jGrasp. Sin
embargo, a travs del men Settings > Look and feel, puedes elegir entre cinco temas visuales hasta encontrar uno
que te guste ms:
Volvamos al aspecto original para comenzar a editar nuestro primer programa. Accede al men File > New > Java y teclea
un programa, guardndolo despus con el icono del diskette o a travs del men File > Save. Recuerda que en Java es
fundamental que el nombre del archivo coincida exactamente con el nombre de la clase, respetando las maysculas. Los
convenios nos dicen que todas los nombres de clase empiezan por mayscula, mientras que los mtodos y atributos lo hacen
en minscula. Tambin puedes recuperar una clase guardada mediante el icono de la carpeta o el men File > Open. En
esta imagen vers los tres botones con los que vamos a trabajar: compilar (cruz verde), ejecutar (un hombre corriendo, del
ingls runpara ejecutar) y depurar el programa (un insecto, del trmino ingls bug utilizado para designar fallos de
programacin).
Inevitablemente, todos cometemos errores al programar. jGrasp nos ir informando de nuestras equivocaciones con el mayor
detalle posible, indicndonos el nmero de lnea en que ha detectado el error, la posicin exacta del mismo, y un mensaje
explicativo. Ten en cuenta que los mensajes no siempre sern precisos, ni siquiera el nmero de lnea: muchas veces un fallo
se achaca a una lnea cuando el autntico motivo del error se encontraba en la anterior.
Aunque jGrasp nos resaltar en color gris la lnea conflictiva, suele resultar til activar la numeracin de lneas en el cdigo
para localizar los fallos ms fcilmente. Podrs hacerlo con el men View > Line numbers.
Ya hemos terminado! Tu primera clase ha sido compilada y ejecutada con xito; veamos ahora funcionalidades algo ms
avanzadas.
2. Sacndole partido
Hemos dicho que los programas en Java estn normalmente constituidos por varias clases. Por ello, todos los entornos de
desarrollo permiten crear proyectos para tener rpido acceso a todas las clases que van a participar en nuestro programa.
jGrasp no es una excepcin, as que vamos a ver cmo podemos dar forma a un sencillo proyecto Java. Para empezar, accede
al menProject > New > New Standard Project:
A continuacin aadirs las clases que quieres utilizar. Si an no las has programado, podrs irlas incorporando despus. Ten
en cuenta que las clases del proyecto pueden estar repartidas por tus unidades de disco, aunque te resultar ms cmodo
agruparlas en tu directorio de trabajo. Observa ahora en la parte izquierda la ventana proyectos abiertos, en la que tienes
acceso rpido a los archivos que has incluido en el proyecto.
Se echa de menos, sin embargo, una diferenciacin visual de los paquetes. En Java, cuando tenemos un conjunto de clases
que estn relacionadas entre s, solemos agruparlas en paquetes (un concepto similar al de librera). Por ejemplo, las clases
Crculo, Cuadrado y Rectngulo podran agruparse en un paquete llamado figuras. Esta agrupacin exige dos cosas:
Al principio de cada una de las clases del paquete debe aadirse la siguiente lnea: package figuras
Adems, las clases del paquete deben estar almacenadas en un directorio que se llame figuras
Una de las ventajas de esta agrupacin es que desde una clase puedes referenciar a otra del mismo paquete sin necesidad de
importarla. jGrasp permite esto, pero lo lgico sera que en la ventana de proyecto las clases estuviesen agrupadas
visualmente por paquetes, y eso no ocurre.
Entre las funcionalidades ms interesantes de jGrasp est su diseo automtico de diagramas UML (el estndar ms utilizado
para esquematizar programas) para tu proyecto, mostrando adems las relaciones entre las clases.
Cuando pulsas en una clase, a la izquierda vers con todo detalle sus atributos y sus mtodos. El alumno podr contrastar as
el diagrama de clases que realiz antes de programar, y el resultado que ha obtenido finalmente:
jGrasp ofrece otro tipo de diagramas, llamados de estructuras de control (CSD), accesibles a travs el botn sealado en la
siguiente figura. Siguiendo una notacin que puedes estudiar en la documentacin del programa, el alumno podr ver
representadas grficamente las distintas estructuras de control de flujo, tanto de seleccin ( if, switch) como de iteracin
(while,for). Adicionalmente, unas flechas horizontales identifican los puntos en que un mtodo recibe o devuelve valores. Este
tipo de diagramas puede plegarse y desplegarse con el ratn para facilitar la visin global de la clase. Cuando un fragmento de
cdigo est oculto, aparece un signo +.
Sigamos con funcionalidades interesantes de cara a la docencia: ya dijimos que Java desafa la paciencia del programador
aficionado, ya que hasta que todas las clases no estn listas no podemos programar un mtodo principal que resuelva
problemas. Para aliviar esta espera, jGrasp incorpora una interfaz visual para crear objetos sobre la marcha, ponindolos en un
banco de trabajo (ventana izquierda) y permitiendo interactuar con ellos. En la siguiente imagen puedes ver cmo creamos un
objeto de la clase Tringulo, indicando los valores necesarios para construirlo. Una vez creado, puedes examinar los atributos
del objeto e invocar sus mtodos pulsando el botn derecho del ratn y escogiendo Invoke method.
Observa tambin en la imagen anterior el recuadro Evaluar expresin, tambin en la ventana izquierda: nos servir para
escribir breves fragmentos de cdigo Java para probar su funcionamiento. Estos fragmentos pueden aludir a los objetos
creados en el banco de trabajo.
El banco de objetos es sin duda un gran arma didctica de la que el profesor podr sacar mucho partido, incorporada primero
por BlueJ y aadida despus (de una forma menos intuitiva, todo hay que decirlo) en el entorno que ahora nos ocupa. Aunque
no lo haremos en este monogrfico, te recomendamos probar ms adelante las opciones de visualizacin para estructuras de
almacenamiento (como un ArrayList).
La ltima funcionalidad que vamos a repasar es la depuracin, que nos ayuda a localizar en qu punto de nuestro programa se
encuentra ese fallo que no conseguimos encontrar. La base de toda depuracin consiste en los llamados breakpoints o
puntos de ruptura: simplemente haz click en la columna gris a la izquierda de la lnea de cdigo en la que sospechas que
puede haber problemas, y vers cmo aparece un crculo rojo. Si una vez hecho esto ejecutas el programa pulsando en el
icono de depuracin, vers cmo la ejecucin se detiene cuando el programa llegue a la lnea que has marcado. Es como
pulsar el botn de pausa mientras vemos una pelcula: ahora, en la ventana izquierda, podremos inspeccionar el estado de
nuestros objetos, comprobando si tienen los valores que deberan tener y permitindonos as localizar la causa del error.
Como se muestra en la imagen, los botones superiores nos permitirn reanudar controladamente la ejecucin a partir de este
punto, ofreciendo mltiples opciones: desde seguir paso a paso, ejecutando instruccin por instruccin, hasta continuar la
ejecucin abandonando la depuracin. Tambin podemos decidir si, en caso de que la siguiente lnea corresponda a una
llamada a un mtodo, queremos introducirnos en el cdigo de dicho mtodo paso a paso o preferimos que lo ejecute
normalmente pero se detenga al terminar. Las opciones en depuradores profesionales son muchas ms, pero jGrasp ofrece las
ms utilizadas: es ms, seguramente para el usuario medio sobran la mitad de los botones de que disponemos.
Terminaremos lamentando la ausencia de documentacin sobre este programa en espaol: si bien existen tutoriales y un
manual de uso, a da de hoy todos estn en lengua inglesa.
3. Valoracin
A continuacin se indican los aspectos que sobresalen en jGrasp, para bien o para mal, respecto al resto de entornos
estudiados:
Su planteamiento y organizacin es similar al de IDEs como NetBeans o Eclipse, acostumbrando al alumno a entornos
ms profesionales
Permite una cmoda organizacin cuando hay muchos archivos abiertos
Genera automticamente diagramas de clases UML, de gran utilidad didctica
1. Puesta a punto
Lo primero que haremos ser descargar el programa de su pgina web y proceder a instalarlo. El procedimiento es
trivial y, asumiendo que ya tuvieses instalado el JDK, no tendrs que configurar absolutamente nada para empezar a
trabajar; pero antes de programar nuestra primera clase, debemos hacer una aclaracin previa.
La pantalla principal aparecer en gris hasta que creemos un proyecto. En BlueJ existe una desafortunada confusin
entre el trmino 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 lneas de
cdigo package, obligatorias segn la norma de Java. Si trabajar con paquetes es prioritario para ti, BlueJ no es
definitivamente la mejor opcin. 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
conProject > New Project y ya podremos empezar a trabajar. La pantalla se mostrar as:
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 ms adelante. Por ltimo, una barra gris cambiar de color y se pondr en
movimiento cuando haya un programa en ejecucin.
Existen dos formas de aadir una clase al proyecto: la primera es crearla nosotros mismos, mediante el botn New
Class. La segunda es aadir 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 ocurra: simplemente se
utilizaba la clase desde su ubicacin 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 misin es proporcionarte un modelo o esqueleto de
cdigo sobre el que trabajar. Este borrador ser distinto si queremos hacer una clase estndar o, por ejemplo, un applet
(aplicacin grfica de ventana). Sin embargo, y ya que la misin es aprender, quiz sea mejor borrar la propuesta y
comenzar a trabajar con el editor en blanco.
Las clases que aadimos al proyecto se representan mediante un rectngulo marrn: en la imagen anterior aparece
rayado porque an no lo hemos compilado. Para editar el programa debes hacer doble click con el ratn sobre el
rectngulo, apareciendo una nueva ventana de edicin. 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 botn de la izquierda compilar todas las clases del proyecto,
mientras que si pulsamos sobre el rectngulo de una clase con el botn derecho del ratn, podremos compilar por
separado dicha clase. Este mismo men nos permitira tambin eliminar la clase del proyecto.
Y la ejecucin? Localiza la clase en la que est el mtodo principal, pulsa sobre su rectngulo con el botn derecho, y
selecciona el mtodo main: vers que la ejecucin provoca la aparicin de una ventana independiente (s, otra ms), en
la que aparecer el resultado de ejecutar tu programa.
2. Sacndole partido
Retomemos un proyecto completo, que involucre distintas clases:
Observa que los diagramas que ofrece BlueJ no son completos (no muestran los mtodos 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 artculo. Podemos reorganizar los rectngulos en la ventana para que las flechas se vean con claridad.
Observa tambin 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 misin es nicamente permitir al autor del
programa escribir notas sobre el mismo.
Volvamos al proceso de compilacin. Cuando sucede un error, BlueJ resaltar la lnea errnea y mostrar un mensaje.
En ocasiones, un smbolo de interrogacin nos permitir obtener una explicacin ms detallada del problema (en
ingls, eso s).
Al igual que jGrasp, BlueJ no muestra por defecto los nmeros de lnea al editar un archivo. Si deseas que aparezcan,
accede al men Tools > Preferences y marca la opcin Display line numbers.
A estas alturas ya te habrs dado cuenta de que la sencillez ha guiado el diseo de este entorno: ahora comprobars lo
intuitivo y fcil que resulta interactuar con los objetos sin necesidad de un mtodo principal. Haz click con el botn
derecho sobre una clase y tendrs acceso al mtodo constructor (new...). Adems del nombre del objeto, es probable
que tengas que introducir algunos valores iniciales:
A continuacin puedes ver el aspecto del banco de trabajo en la parte inferior de la pantalla, despus de crear algunos
objetos:
Sin necesidad de escribir un programa principal, puedes interactuar con estos objetos pulsando sobre ellos con el
botn derecho y ejecutando cualquiera de sus mtodos:
A travs del men View > Show Code Pad acceders a una nueva ventana en la que puedes ejecutar expresiones
sencillas y tambin referenciar a los objetos creados en el banco. Recuerda que esta funcionalidad tambin la ha
incorporado jGrasp, como se vio anteriormente.
El banco de objetos es una herramienta muy poderosa y cmoda 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 desaparecern y
tendrs que crearlos de nuevo. Por tanto, el banco de objetos en ningn caso sustituye la necesidad de escribir un
mtodo principal que gue la ejecucin del programa.
Una puntualizacin sobre este mtodo principal: el lenguaje pide que main reciba un conjunto de cadenas de texto
como parmetros, para permitir la recepcin de datos externos al ejecutar el programa. Adems, main debe declararse
como mtodo esttico (enseguida aclararemos qu es eso). La cabecera del mtodo main debera 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 cdigo como
este no compilar en otros entornos de programacin, por tanto se recomienda respetar la sintaxis original de Java.
Por ser un mtodo esttico, para ejecutar el mtodo main basta (como dijimos anteriormente) con pulsar con el botn
derecho sobre la clase principal y escoger el mtodo main:
Si main fuese un mtodo convencional, tendramos que crear primero un objeto miTest de la clase Test, para a
continuacin invocar el mtodo. Ah est el problema: en programacin orientada a objetos tiene sentido crear objetos
que representen cuadrados o personas, pero qu representara un objeto test, o un objeto matemticas? Puede
haber varias matemticas? Esta es la razn de ser de mtodos estticos como el main de Test, o las funciones
matemticas de la clase Math.
Slo nos queda repasar las funciones de depuracin, 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:
Observa que los botones de control de ejecucin se han reducido al mnimo: avanzar una instruccin ( step), ejecutar
una llamada a un mtodo paso a paso (step into), continuar hasta el siguiente punto de ruptura, y abortar la ejecucin.
Ha quedado clara la obsesin de los creadores de BlueJ por simplificar, y en el caso de la depuracin no podemos
criticar su eleccin: estn las opciones justas, y resultan muy intuitivas para el usuario.
Hay una ltima ventaja de este entorno que an no hemos comentado: y es que si bien el manual de referencia est en
ingls, el tutorial oficial est traducido al castellano y es accesible desde la pgina web del programa. Adems, y
tambin en castellano,existe un libro de introduccin a la programacin en Java utilizando precisamente este entorno,
lo que puede sin duda facilitar la tarea al profesor.
3. Valoracin
Destaquemos para terminar los puntos fuertes y dbiles de este entorno:
1. Puesta a punto
Al igual que con los otros entornos estudiados, la instalacin de NetBeans no presenta ninguna complicacin, incluso si
se escoge descargarlo por separado desde la web del programa. Sin embargo, al abrir NetBeans nos encontramos una
pantalla algo ms confusa que en los anteriores entornos:
Al igual que en BlueJ, para empezar debemos crear un nuevo proyecto mediante el men File > New project,
indicando en este caso de qu tipo va a ser. Ya desde el principio, advertirs muchas opciones y posibilidades en el
entorno, seguramente ms de las que en muchos casos nos interesara:
En una ventana posterior daremos nombre al proyecto y escogeremos una ubicacin en el disco para almacenarlo.
Tambin nos dar la opcin para crear automticamente una clase principal, la que hasta ahora hemos llamado Test, y
que aqu por defecto se llamar Main. Una vez hecho esto, la ventana de trabajo nos resultar sin duda compleja, pero
tambin familiar:
NetBeans nos ofrece un esqueleto de clase Main, que podemos utilizar para hacer nuestra primera prueba. Por
defecto, NetBeans compila automticamente los archivos en el momento en que los grabas (icono del diskette), de
forma que nicamente necesitamos utilizar el botn que representa una flecha verde, como el play de un mando a
distancia. Vers el resultado de la ejecucin en la ventana inferior:
Como ves, no ha sido nada difcil empezar a trabajar con NetBeans; en la siguiente seccin esbozaremos las
capacidades de esta potente aplicacin.
2. Sacndole partido
Examinemos en detalle la carpeta de proyecto. Vers que se han creado mltiples subcarpetas en tu directorio de
trabajo:
De ellas slo nos van a interesar dos: en src se encuentran los archivos fuente de nuestro programa, mientras que
en build es donde guarda NetBeans los archivos compilados ( .class). Para aadir una nueva clase al proyecto slo
tienes que utilizar el botnNew Class; si lo que quieres es agregar al proyecto clases ya existentes, la forma ms
rpida consiste en copiarlas directamente a la carpeta src.
En jGrasp o BlueJ, el primer error de compilacin provocar la detencin del proceso: aqu puedes seguir trabajando
aunque se acumulen varios errores, corrigindolos despus en el orden que quieras. Fjate en la parte izquierda de la
ventana: NetBeans distinguir con iconos aquellas clases que presentan errores de compilacin. Y puesto que la clase
pertenece al paquete figuras, tambin marca el paquete completo como errneo. De igual forma, el
proyecto trigonometra queda marcado en rojo por la existencia de al menos un error en sus archivos.
Sin duda, y pese a la complejidad, resulta muy cmodo programar en NetBeans. Se trata de un completo entorno que
nos permitir realizar no slo programas sencillos sino autnticos proyectos profesionales de programacin. Como
todos los IDEs dirigidos a programadores profesionales, ofrece herramientas avanzadas que nosotros, en un curso de
iniciacin a Java, raramente vamos a utilizar. Pero para que te hagas una idea de lo que estamos hablando,
repasaremos algunas de sus posibilidades:
Permite la integracin de la herramienta Ant de Apache, que permite automatizar mediante guiones o scripts la
compilacin de proyectos complejos y realizarla despus dndole a un solo botn. Las posibilidades de Ant
son enormes, permitiendo especificar, por ejemplo, que los archivos fuente se almacenan en unas
determinadas carpetas mientras los compilados se deben copiar a otras. Tambin se pueden programar
scripts de limpieza que eliminen todos los archivos compilados o no utilizados.
Soporta control de versiones con la herramienta gratuita CVS. Esta funcionalidad es extremadamente til al
programar en equipo, y bsicamente consiste en tener un nico almacn de archivos compartido por todos
los colaboradores de un proyecto de programacin. El sistema registra todos los cambios realizados de
forma que cada programador puede ver resaltado en colores qu cambios ha hecho su compaero en cada
archivo. Cuando el equipo se da cuenta de que ha cometido un error, puede dar marcha atrs y recuperar
rpidamente una versin anterior, deshaciendo los cambios realizados. Ms an: dos programadores pueden
modificar un mismo archivo a la vez. Cuando el segundo intente devolver el archivo modificado al almacn, el
programa le facilitar la revisin para mezclar sus cambios con los de su compaero, siempre que no
resulten incompatibles.
Ofrece la posibilidad de refactorizar cdigo. Utilizamos esta palabra para designar cambios menores en el
cdigo que, sin modificar la funcionalidad de nuestro programa, lo simplifican o facilitan su legibilidad. El
ejemplo ms bsico de refactorizacin es cambiar el nombre de una variable: el entorno se ocupar de
realizar el cambio en todos los puntos del programa en que aparezca, incluso en otros archivos del proyecto.
NetBeans tambin permite ordenar automticamente el cdigo, introduciendo tabulaciones y espaciados para
que el programa se lea con facilidad.
Incorpora el autocompletado de cdigo. Imagina que ests escribiendo el nombre de una variable o de un
objeto, pero no recuerdas qu nombre le diste exactamente: pues bien, simplemente escribe las primeras
letras, pulsa la tecla Control y la barra espaciadora, y el programa te indicar cules son los nombres
disponibles. Algo parecido sucede con los atributos y mtodos de una clase. Si escribimos el nombre de un
objeto seguido de un punto, sabemos que a continuacin debe ir o bien un atributo o bien un mtodo de los
que ofrezca la clase a la que pertenece el objeto en cuestin. Si no recordamos su nombre repetiremos la
combinacin de teclado y el entorno nos ofrecer las distintas posibilidades:
Las dos primeras funcionalidades estn muy orientadas al uso profesional y tendra poco sentido utilizarlas en un curso
de iniciacin, pero es posible que algn profesor quiera ilustrar las posibilidades de trabajo en equipo incorporando un
servidor de control de versiones. El autocompletado, sin embargo, puede ser utilizado en clase con frecuencia; otra
cuestin sera el considerarlo o no adecuado para la labor docente. La funcin de NetBeans es permitir programar
deprisa, y funciones como el formateado automtico del texto y el autocompletado de cdigo ahorran al programador
tiempo y errores. Algunos profesores considerarn que, cuando empezamos, no deberamos recibir tantas ayudas y
sino enfrentarnos precisamente a esos errores. Otros valorarn estas herramientas para que los alumnos se sientan
ms guiados en su tarea de programar.
NetBeans no permite la creacin interactiva de objetos (una iniciativa interesante a nivel didctico, pero no tanto en un
IDE profesional). Pero podemos completar nuestro paseo por el entorno comprobando cmo funciona la depuracin. La
forma de realizarla es igual que en los otros entornos, aunque NetBeans proporciona posibilidades de inspeccin y
monitorizacin mucho ms avanzadas. Lo que a nosotros nos interesa, sin embargo, se realiza de forma similar: haz
click en la columna gris a la izquierda de las lneas donde quieras aadir puntos de ruptura, y pulsa el icono de depurar
programa:
En verde se destaca el punto de ruptura en el que estamos detenidos, y en rojo otros puntos de ruptura que hayamos
marcado. En la ventana inferior podremos examinar los valores de todos los objetos en este punto, y a travs del
men Debugencontraremos las opciones ya conocidas para controlar la ejecucin ( step, step into...) aparte de otras
posibilidades que sobrepasan nuestros intereses.
Los mens y mensajes de NetBeans estn escritos, al igual que su documentacin, en ingls. Sin embargo, existe un
grupo de trabajo dedicado a traducir el IDE al espaol, de forma que algunas versiones se encuentran traducidas a
nuestro idioma. En cuanto a la documentacin, iniciativas personales o universitarias de Espaa o Iberoamrica
permiten encontrar en la red ciertos recursos para comprender mejor esta popular y potente plataforma.
3. Valoracin
Al igual que con el resto de entornos, terminemos con una breve exposicin de sus aspectos ms destacados:
Si un alumno necesita programar en su vida profesional y ha aprendido con NetBeans, podr enfrentarse con
confianza a cualquier entorno presente en la empresa, ya que todos son muy parecidos entre s
La gestin de paquetes y sus avanzadas detecciones de errores (incluso antes de compilar) resultan ms
cmodas e intuitivas que en los otros entornos
Conclusiones
Seguramente a estas alturas ya te hayas hecho una idea de qu entorno te interesa ms; pero por si acaso, hagamos
un repaso final.
BlueJ es un entorno visualmente agradable, sencillo, y con potentes aadidos para facilitar la tarea docente;
pero el trabajo intensivo resulta ms incmodo y en su bsqueda de simplicidad elude algunos aspectos del
lenguaje Java.
jGrasp es algo menos atractivo y, si bien ofrece tambin las algunas facilidades interactivas, no quedan tan
bien integradas como en BlueJ. Sin embargo, su organizacin de archivos es mucho ms clara, y su uso
prepara mejor al alumno para el uso de entornos profesionales.
Uno de esos entornos profesionales es NetBeans: todas las funciones avanzadas estn presentes en este
potente IDE, con la ventaja adicional que ofrece su sencilla instalacin junto con el kit de desarrollo. No
obstante, utilizar un entorno tan potente para iniciarse quiz sea excesivo y desde luego no es buena idea si
se dispone de equipos con caractersticas ms bien modestas.
La siguiente tabla recoge esquemticamente algunas de las diferencias entre los entornos estudiados:
Caracterstica
BlueJ
jGrasp
NetBeans
No
No
Algunas versiones
No
No
Disponibilidad en Linux
Tipo de licencia
CDDL y GPL2
(software libre)
No
Escasa
Completa (diagrama
Abundante
UML)
Gestin de paquetes
Confusa
Regular
Buena
Funciones de depuracin
Muy bsicas
Bsicas
Avanzadas
No
No
Muy fcil
Fcil
No
10 MB
6 MB
160 MB
70 MB
50 MB
140 MB
No
Baja
Alta
Alta
Complejidad de uso
Muy baja
Baja
Media
Ten muy presente que la facilidad de uso de un programa no puede expresarse en una tabla. Si tienes dudas, lo mejor
es instalarlos y hacer unas cuntas pruebas: al final todo es cuestin de gustos, y deberas escoger aquel entorno con
el que sientas ms seguridad y confianza. An no lo tienes claro? Un ltimo criterio: piensa en el motivo por el que tus
alumnos aprendern Java. Si es una mera iniciacin a la programacin pero no es probable que vayan a programar
habitualmente en un futuro prximo, escoge BlueJ; pero si ests preparando a tus alumnos para ser programadores,
utiliza NetBeans. Si te encuentras en una situacin intermedia, puedes apostar por JGrasp. Cualquiera que sea el
entorno elegido, la enseanza de Java resultar una experiencia estimulante y creativa: y no slo para los alumnos,
sino tambin para el profesor.
http://recursostic.educacion.es/observatorio/web/ca/software/programacion/911-monograficojava?showall=1