Blog de Antonio Manuel Muñiz

Desarrollo, Ingeniería y Calidad del Software

Archivos mensuales: May 2009

Sonar PDF Plugin 0.2 Released

Hace unos días hemos publicado Sonar PDF Plugin 0.2. Los cambios principales son: compatibilidad con Sonar 1.9, uso de «-Dbranch» e inclusión de hotspots en el reporte.

La publicación de esta nueva versión ha coincidido con la inclusión de Sonar en el Marco de Desarrollo de la Junta de Andalucía (proyecto MADEJA) como herramienta de verificación de la calidad del código de las aplicaciones desarrolladas para la administración pública andaluza.

JIP Java Profiling

Buscando herramientas para realizar labores de profiling Java he encontrado JIP (Java Interactive Profiler). Esta herramienta permite monitorizar a nivel de máquina virtual parámetros tan útiles como métodos que más tardan en ejecutarse, número de veces que se llama al método o el tiempo que ocupó su ejecución durante la vida del Thread que lo contenía.

Además su configuración es muy sencilla, algo poco común en el mundo del profiling Java. Tan solo es necesario iniciar la máquina virtual con los siguientes parámetros:

-javaagent:/antonio/jip/profile.jar -Dprofile.properties=/antonio/jip/profile.properties

En función del contexto en el que nos movamos estas propiedades se configuran de un modo u otro. Por ejemplo, si estamos monitorizando una aplicación web que es lanzada a través de un wrapper incluiremos entradas en el wrapper.conf, pero si nuestra aplicación está en un Tomcat sólo tenemos que incluirlas en $CATALINA_OPTS. Eso si, las rutas a profile.jar y profile.properties (ambos incluidos en la distribución de JIP) deben ser absolutas.

Al inciar la JVM debemos ver en los logs lo siguiente:

Java Interactive Profiler: starting

Si no, algo hemos hecho mal.

Para iniciar la monitorización haremos uso del cliente de JIP:

./file.sh localhost 15599 /Users/Antonio/temp/jip/jip-1.1.1/client/dump.txt
./start.sh localhost 15599

Esto inciará la sesión de profiling. Cuando hayamos realizado las pruebas oportunas:

./finish.sh localhost 15599

Si todo ha ido bien debemos tener en el directorio seleccionado dos ficheros nuevos: dump.txt y dump.xml. Para visualizar los resultados de una forma más amigable podemos usar jipViewer:

./jipViewer.sh dump.xml

La aplicación Java nos mostrará todos los datos del análisis:

JIP Viewer

JIP Viewer

Para terminar comentar que hay algunos detalles mejorables: la documentación en cuanto a interpretación de los datos es escasa y la aplicación monitorizada va mucho más lenta cuando se está monitorizando. Esto último es un factor común a todas las herramientas de profiling debido al uso de agentes Java que inyectan código para poder realizar los cálculos de tiempo necesarios.