Experimenta con tu código en Eclipse utilizando Scrapbooks
1. Introducción
Seguro que más de una vez te has visto en la necesidad de probar o experimentar con algún fragmento de código a la hora de programar. Suele pasar, por ejemplo, con las cadenas de texto: sabes lo que quieres hacer, pero no sabes si ese método que aparece en el autocompletar con un nombre que te gusta hará lo que que crees que su nombre sugiere. O también con unos algoritmos aparentemente básicos pero que no recordamos cómo afrontar.
Cada uno tenemos nuestra forma de afrontar estas situaciones. A mí se me suelen pasar por la cabeza:
…y seguro que tú también tienes tu forma casera de probar los fragmentos de código sin tener que levantar la aplicación completa…
Para resolver esta problemática, el entorno de desarrollo Eclipse nos brinda la funcionalidad «ScrapBook», que nos permite probar fragmentos de código de forma aislada para que luego podamos incorporarlos a nuestros programas completos.
2. Entorno
Para realizar este tutorial se ha empleado el siguiente entorno de desarrollo:
- Hardware: Mac Book Pro 15″ Intel Core i7 2,8 GHz, 16 GB RAM.
- Sistema Operativo: Mac OS X Yosemite.
- Eclipse Kepler SR2 (aunque vale cualquier Eclipse).
3. Creación y uso de un ScrapBook
Para poder utilizar los ScrapBook de Eclipse deberemos seguir los pasos que se indican a continuación
1. En primer lugar deberemos estar en un proyecto Java en Eclipse.
2. Vamos a File>New>Other. En el Wizard deberemos buscar «Scrapbook Page». Podemos escribir en la caja de texto si no queremos buscar por el árbol de posibilidades.
3. Elegimos el nombre del fichero de Scrapbook que queremos utilizar y la ubicación de este. Es posible que quieras en un futuro incluir en la lista de ficheros ignorados de Git (u otro control de versión), ya que no debería formar parte del producto final.
El resultado que obtendremos será un fichero llamado miScrapbok.jpage (o el nombre que hayamos utilizado .jpage). Ya podremos comenzar a escribir nuestro código de prueba.
Comenzaremos con algo sencillo para ver cómo ejecutarlo. Escribiremos:
int numero = 42;
numero++;
¿Cómo ejecutamos este código? Es algo diferente a cómo lo hacemos para una clase normal de Java:
1. Seleccionamos el código que queremos ejecutar (Comando+a para seleccionar todo – en Mac, en tu SO será otro-).
2. Pulsamos con el botón secundario del ratón para obtener el menú secundario. Ahí podremos ver las opciones para ejecutar el código
3. Pulsamos sobre la opción «Display», y veremos el resultado a continuación de la última instrucciones. Como puedes imaginar, el resultado, (int) 43 nos indica el número obtenido y el tipo. Aparece seleccionado por si queremos borrarlo o copiarlo.
Vamos a ver ahora un ejemplo algo más complejo que implique el uso de clases. Vamos a contar los elementos de un ArrayList
List lista = new ArrayList<String>(); lista.add("uno"); lista.add("dos"); lista.add("tres"); lista.size();
Si seguimos los pasos del primer ejemplo, veremos que al ejecutar el código seleccionado (todo) con el comando Display obtenemos un error:
Puedes imaginar de dónde viene el problema: tenemos que tener en cuenta que en los Scrapbook no funcionan las instrucciones de tipo import de una clase normal de Java, y por tanto el error proviene de que no reconoce el tipo List (ni ArrayList).
Esto no quiere decir que no podamos utilizar las librerías necesarias. Para ello debemos configurar el entorno mediante la opción «Set Imports» que aparece en el menú contextual. Ahí podremos establecer los imports necesarios, tanto de librerías de Java del JDK, como de cualquiera que estemos empleando en el proyecto, incluyendo claro está, nuestras clases.
Vamos a ver cómo incluir StringBuffer para poder utilizarlo en el ScrapBook:
1. Pulsamos con el botón secundario sobre el Scrapbook para obtener el menú contextual.
2. Seleccionamos la opción «Set Imports»
3. En la ventana que aparece, gestionaremos las dependencias, incluyendo o borrando las librerías que queramos, pulsando Add Type o Add Packages. Simplemente incluimos los tipos List y ArrayList:
Aquí podemos ver el resultado
Ahora dentro del Scrapbook, Eclipse sabrá a qué nos referimos. Por supuesto, como en la ventana de edición de clases Java de Eclipse, permite completar código pulsando Control+Espacio (o poniendo el «.») de modo que aparecerá el clásico mení contextual para elegir método o código que podemos poner.
Volvemos a ejecutar el código anterior seleccionándolo y pulsando sobre «Display»:
Podemos ver el resultado, que es de tipo entero y es 3, tal y como cabe esperar de las instrucciones que hemos puesto en el Scrapbook: un Objeto de tipo List que se ha completado con 3 elementos y se le ha pedido el resultado.
4. Otros modos de ejecución
Hasta ahora solo hemos visto cómo ejecutar con la opción «Display» nuestro código. Podemos utilizar otros dos modos: «Inspect» y «Execute». Vamos a ver las características de cada uno basándonos en el último ejemplo.
Opción 1: usando Inspect
En este modo de ejecución podremos ver el resultado mediante el popup de inspección que aparece cuando nos situamos sobre una variable cuando estamos haciendo debug con Eclipse de una clase normal de Java.
De este modo podremos inspeccionar no solo el resultado, sino las variables que componen el código.
Podemos analizar la información con más detenimiento si llevamos estos datos a la ventana «Expressions View», pulsando la combinación de teclas que nos indica en la parte inferior de la ventana que aparece. En el caso de Mac es: Shift+Comando+I
Opción 2: Usando Display
Es el modo que ya hemos visto en los ejemplos iniciales. El resultado es una cadena de texto con el tipo y el valor del resultado de las líneas seleccionadas. En esta ocasión solamente vamos a seleccionar las dos primeras líneas del ejemplo de la lista: la definición y la asignación del primer elemento. Vemos que el resultado se pinta justo detrás del último caracter seleccionado:
Más adelante veremos qué sucede con los errores en la ejecución.
Opción 3: Ejecutando la expresión
Es el modo normal en el que lo ejecutaríamos en una clase de Java con Eclipse. Es decir, no obtendremos ni la ventana de Inspección ni se escribirá el mensaje con el resultado a partir del lugar en el que esté el cursor como con Display. Para conocer el resultado deberemos hacer un print a la consola por ejemplo.
4. Cómo ver los errores en un ScrapBook
También es posible recibir la información relativa a los errores en el código que estamos probando en los ScrapBook, aunque desgraciadamente no es tan explícita e informativa como la que obtendríamos en una clase normal, donde podremos ver la traza con detenimiento en la consola. Tenemos dos formas de verlo:
Errores de compilación
Los típicos errores que no permiten compilar el código: métodos mal escritos, dependencias erróneas, instrucciones mal especificadas… El error aparecerá al comienzo del fragmento de código escrito en una cadena de texto. Para ilustrarlos hemos cambiado el constructor de la clase ArrayList por el de la clase inexistente ArraList
Errores en tiempo de ejecución
Son los errores no detectados en tiempo de compilación fruto de los valores que pueden tomar las variables del programa. En este caso aparecerá el error al final del código seleccionado y también suele aparecer una traza en la consola que nos facilitará el proceso de depuración. En este ejemplo hemos introducido una petición para el elemento 25 de la lista (que no existe).
Sea cual sea el tipo de error o de resultado obtenido, no olvides que Eclipse escribe los mensajes en el propio Scrapbook, así que ¡tendrás que borrarlos para volver a ejecutarlo!
5. Conclusiones
En este tutorial hemos visto cómo utilizar una herramienta que nos propone Eclipse para realizar pruebas o prototipos de código sin la necesidad de tener que manipular el código de nuestro proyecto haciendo clases o métodos de prueba, o acudiendo a lenguajes de scripting de la JVM. Además dispone de la posibilidad de ejecutar solamente fragmentos seleccionados de código de una forma rápida.