Hace algunas semanas escribía una breve entrada sobre librerías para trabajar con hojas de cálculo Excel desde Java. En esta ocasión he tenido la necesidad de exportar un conjunto de datos en formato CSV. Generar un archivo con datos separados por comas o punto y coma es sencillo, y quizás, no compense añadir una nueva dependencia para algo tan simple. Antes de ponerme a codificar, decidí ojear un poco:
- Java CSV
- SuperCSV
Opté por la segunda porque me ha permitido trabajar directamente con JavaBeans y es algo más completa que la primera. Otra librería que conocí hace algún tiempo es Smooks. Aunque hubiera sido como cortar el césped con una excavadora, estuve tentado a usarla. Tiene muy buena pinta y las referencias y ejemplos que he visto, son muy interesantes.
Una de las nuevas funcionalidades de Opina que está planificada para la versión 1.4.0 es la exportación de los resultados de una encuesta a una hoja de cálculo Excel. Inicialmente había pensado en trabajar con OpenDocument, pero necesitaba compatibilidad con Microsoft Excel 97 y sus versiones posteriores. La verdad es que la hoja de cálculo que se necesita es un muy simple, nada de imágenes, nada de fórmulas, simplemente celdas con algo de estilos (colores, tipos de letra y tamaños) y datos.
Las opciones que encontré para trabajar con documentos Excel desde Java fueron:
- JExcelApi
- POI-HSSF / POI-XSSF
En estos momentos estoy usando la primera en Opina, y las impresiones son muy buenas:
- Aunque a priori la documentación parece escasa, es suficiente para comenzar a trabajar y montar un ejemplo.
- Tiene carencias en cuanto al manejo de fórmulas y gráficos, pero si no necesitas algo complejo, es una opción válida.
- No he trabajado con documentos complejos y grandes, pero en breve tendré referencias en este sentido. Tengo encuestas con más de 40 preguntas y más de 1500 usuarios encuestados. Además la estamos usando en un proyecto donde se gestiona un volumen de datos importante y puede ser otra buena referencia. Cuando tenga resultados, los compartiré.
- Los conceptos a manejar son pocos: workbook, worksheet, label, writableFont, writableCellFormat y algunos más.
- La última versión (2.6.10) es el 28 de mayo de 2009. La primera versión de la rama 2.x es del 10 de octubre de 2003. Durante este periodo más de 30 versiones publicadas. Y si vemos la lista de correo, podemos comprobar su actividad.
Que conste que las necesidades que Opina tiene son muy básicas, es probable que otro tipo de proyectos tengan más requisitos y tengan que descartar esta opción. He buscando el artefacto por los repositorios de Maven que conozco, pero no lo he encontrado. Por lo tanto, he definido sus coordenadas para instalarlo en mi repositorio local (y en nuestro ecosistema) y he añadido el JAR a directorio libs correspondiente.
De la segunda opción no puedo decir nada de primera mano, sólo tengo comentarios e impresiones. Es un proyecto importante en ASF y son muchos los proyectos que en él se apoyan, por lo tanto, me da confianza. De hecho lo usamos de forma indirecta porque Eclipse Birt es nuestra opción (actual) para la generación de reportes.
Si alguien se encuentra con la necesidad de monitorizar el consumo de memoria que está haciendo su contenedor JSP/Servlet Apache Tomcat, quizás esta entrada le interese.
Hace ya algunos años que vengo usando Lambda Probe. Concretamente comencé a usarlo tras la primera release de Opina y posteriormente se convirtió en una de mis herramientas favoritas. Es difícil ver un entorno de desarrollo montado por mi en el que no esté presente esta herramienta. La uso tanto durante la fase de desarrollo como tras la puesta en producción. Es aconsejable monitorizar (aun estando en producción) nuestra aplicación, aunque sólo sea durante las primeras semana. Es una herramienta muy útil para preparar informes de calidad relacionados con rendimiento. ¿Cómo establecer sino los requisitos mínimos de memoria? Supongo que hay ocasiones en las que los administradores de sistemas reciben aplicaciones que deben ser desplegadas y desconocen cuáles son esos requisitos mínimos.
Pues bien, definiendo un buen entorno de entorno de desarrollo, pruebas de rendimiento y Lambda Probe, podemos realizar una buena aproximación de eso requisitos mínimos de memoria.
¿Qué debemos hacer para añadir a nuestro entorno de desarrollo monitorización de memoria?
- Descargamos la herramienta del sitio web oficial.
- Desplegamos el WAR en nuestro Apache Tomcat
- Creamos el archivo $TOMCAT_HOME/bin/setenv.sh y le añadimos la siguiente configuración:
CATALINA_OPTS=”-server -Xms256m -Xmx300m -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote”
- Accedemos a la aplicación:
http://hostname[:port]/probe
- Y si tenemos correctamente configurado un usuario con el rol manager en $TOMCAT_HOME/conf/tomcat-user.xml, simplemente accedemos con ese usuario. En la página oficial hay información más detallada sobre el proceso de instalación.
A continuación os muestro una captura de pantalla correspondiente al consumo de memoria del entorno de preproducción que usamos para Opina.

Captura de pantalla de Lambda Probe
Recent Comments