Blog de Antonio Manuel Muñiz

Sonar PDF Plugin 0.2 Released

30 Mayo 2009 · 1 comentario

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.

→ 1 comentarioCategorías: Herramientas · Open Source
Etiquetado: , ,

JIP Java Profiling

6 Mayo 2009 · 1 comentario

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.

→ 1 comentarioCategorías: Herramientas · Java
Etiquetado: , , , ,

Sonar PDF Plugin 0.1

21 Abril 2009 · 2 comentarios

Ya hablaba de esto hace algún tiempo, y después de varios meses de trabajo hemos publicado la primera versión (0.1) de Sonar PDF Plugin.

En esta primera versión se ha optado por envolver la lógica de generación del reporte en un plugin para Maven, el cual está disponible en el repositorio central de Maven.

El reporte actual contiene:

  • Información general del proyecto (nombre, descripción, version, módulos)
  • Dashboard (indicadores proporcionados por Sonar, similar al dashboard que muestra Sonar en su interfaz web)
  • Violaciones de reglas por categorías
  • Reglas más violadas
  • Ficheros que más violan las reglas
  • Todo lo anterior para cada módulo que compone el proyecto (si existe alguno)

Ya hay algunas mejoras reflejadas en JIRA para la versión 0.2, seguiremos trabajando.

→ 2 comentariosCategorías: Maven Plugins · Open Source · Software Quality
Etiquetado: , , ,

Curiosidades y peculiaridades de Maven y Java

26 Marzo 2009 · Dejar un comentario

Seguro que todos nos hemos encontrado con ciertas peculiaridades de las herramientas que usamos día a día, pero encontrarse con dos (de las buenas) en un solo día, eso no tiene precio ;) sobre todo cuando el tema te quita medio día.

Son sólo detalles, pero si se dan las condiciones precisas… puede ser un quebradero de cabeza.

Cuando hay dos clases con el mismo FQN (Fully Qualified Name) en el classpath, ¿cuál de las dos se carga? Pues la respuesta es que depende, con Java 1.5 puede ser una, y con Java 1.6 puede ser otra. Resulta que tenía en mi classpath tres versiones de commons-collections (fruto de descontrol con las dependencias transitivas). Si ejecutaba los tests con Java 1.5 todo iba bien, se estaba usando commons-collections-3.1 (que era la versión que yo tanía en mi POM). Pero si usaba Java 1.6 resulta que se cargaba commons-collections-2.1.1 y uno de los métodos que se llamaba por reflexión no existía en esta versión pero sí en la 3.1. La solución, estudiar de donde viene esa dependencia transitiva y excluirla en el POM para que no haya diferentes versiones de un mismo artefacto.

¿Por qué no me aparecen los enlaces a los módulos hijos en el Maven Site? Mi proyecto tenía la estructura típica de un proyecto Maven multimódulo. Configuré los ficheros site.xml para que en el Maven site se pueda navegar mediante enlaces desde el proyecto padre a los hijos y viceversa. Resulta que los enlaces no aparecen. El problema resultó ser que en los POM de los módulos hijos tenía una etiqueta <url> y su contenido era el mismo que en el POM padre, quitando este nodo en los POM de los hijos… problema resuelto. Cuanto menos, curioso.

En fin, el primero de los problemas lo detecté rápido mirando las dependencias transitivas de mi proyecto con Q4E. El segundo fué más bien suerte y gracias alguna incidencia en Codehaus que hablaba de la influencia en el site de la etiqueta <url>.

→ Deja un ComentarioCategorías: Herramientas · Java
Etiquetado: , , ,

Participación en IMAGINATICA 2009

6 Marzo 2009 · 1 comentario

Ayer GMV realizó una ponencia en IMAGINATICA 2009 y  tuve la oportunidad de poder participar en la misma.
En mi intervención intenté expresar a un colectivo de alumnos de la Universidad de Sevilla (estudiantes de Ingeniería Informática mayoritariamente) cómo entendemos el Software Libre en GMV. Comenté nuestra participación en proyectos Open Source que forman parte de nuestro ecosistema software como Continuum, proyecto en el que mi compañero José Morales está trabajando, o Sonar, para el que estamos desarrollando una nueva funcionalidad de la que yo mismo me estoy ocupando.

Sigo pensando que ese peldaño que hay entre la Universidad y la Empresa es demasiado alto, cuando se habla de herramientas como Trac o Subversion en un foro universitario… desgraciadamente pocos las conocen (desde luego yo tampoco las conocía cuando estudiaba). Quizás no estaría demás alguna asignatura orientada en este sentido.

imaginatica-logo

→ 1 comentarioCategorías: Open Source · Profesional
Etiquetado: , ,