Informes en Java, un estudio comparativo

(libre traducción)
Uno de los objetivos más importantes en el diseño de aplicaciones es que estas deben ser diseñadas para ser capaces de convertir los datos complejos en texto simple, atractivo y de la forma mas comprensible posible. Los «informes y  las gráficas»  todavía tienen un largo camino que andar para alcanzar este objetivo. Las aplicaciones java vienen siendo uno de los líderes en aplicaciones empresariales para visualizar datos complejos en forma de gráficos (de tarta, barras, etc), documentos (PDF, MS Excell, etc) o informes que son específicamente personalizados para una aplicación. Hay numerosas aplicaciones java para desarrollo, que pueden ser utilizadas para generar informes.
Este documento cubre algunos de los aspectos importantes de las herramientas más utilizadas, de libre disposición y de código abierto, utilizadas en el mundo Java.

Los concursantes:

Este artículo cubre tres de las herramientas de informes más usadas en las aplicaciones java, a saber: Jasper Reports, Data Vision y Birt (Business Intelligence and Reporting Tools). Estos son los favoritos para las aplicaciones Java por tres razones: son de libre disponibilidad, son de código abierto y tienen una buena documentación y opciones para aprovechar el soporte comercial.

Jasper Reports

Es una poderosa herramienta de informes java de código libre que tiene la habilidad de entregar contenidos enriquecidos en pantalla, para ser impresos en ficheros PDF, HTML, XLS, CSV y XML. Esta enteramente escrito en java y puede ser usado en una gran variedad de aplicaciones compatibles con java, incluyendo J2EE o aplicaciones WEB, para generar contenido dinámico. Su proposito principal es ayudar a crear páginas listas para imprimir documentos de una manera simple y flexible.
Características:
  • Amplia gama de formatos de salida
  • Fuentes de datos flexibles: jasper Reports puede usar cualquier proveedor de fuente de datos, permitiendo extender esta capacidad a los informes para la mayoría de las aplicaciones de terceros. Cuando no es posible acceder a los datos a través de JDBC, o cuando no quieres que JasperReports interactue directamente con la base de datos puedes implementar una fuente de datos JasperReports personalizada. Los informes Jasper pueden obtener los datos de las siguientes fuentes de datos: JDBC, XML, JavaBean, JRDataSource personalizada, CSV, JRDataSourceProvider, Hibernate, Spring cargando una conexion Hibernate, EJBQL, Mondrian OLAP, Query executor mode, Fuente de datos vacía, conexión personalizada de iReport, XMLA Server Connection.
  • Internacionalización.
  • Impresión condicional.
  • Rotación visual de texto.
  • Código de barras integrado de apoyo
  • Basado en la Web y los informes de pixel-perfect
Formatos de salida: PDF, HTML, XLS, CSV y XML. Puede crear informes personalizados diseñando nosotros la interfaz de usuario y la alimentacion de datos.
Completamente desarrollado en java y compatible con aplicaciones java

Puntos positivos:

  • Tiene iReport como herramienta de acompañamiento para diseñar informes.
  • Cuando no es posible acceder a los datos a través del JDBC, o cuando no quieres que JasperReports interactue directamente con la base de datos, puedes implementar una fuente de datos JasperReports personalizada. Además, cualquier informe puede usar datos de múltiples fuentes de datos, y estos pueden ser de diferentes tipos.
  • Muy usado para informes en aplicaciones Java.
  • Soporte Hibernate Query ademas de SQL Queries.

    Puntos negativos:

    • Hay que realizar compilaciones del informe en todo momento.
    • Alta curva de aprendizaje.
    • Las ‘Hibernate Queries’ son poderosas, pero pueden conducir a problemas de rendimiento a menos que se preste especial atención a la optimización.

      BIRT (Business Intelligence and Reporting Tools)

      Birt esta basado en Eclipse, sistema de informes de código libre para aplicaciones web, especialmente aquellas basadas en java y J2EE. A alto nivel, BIRT provee un entorno grafico de diseño de informes, empaquetado como un plug-in para Eclipse o como un como un diseñador de informes independiente. Con un API de tiempo de ejecución, para integrar informes en tu aplicación. Tiene dos componentes principales:  un diseñador de informes basado en Eclipse y un componente en tiempo de ejecución que se puede añadir a tu servidor de aplicaciones.

      Características:

      Puede añadir una amplia variedad de informes a tu aplicación tales como:
      • Listas: los informes simples son listas de datos. Como las listas pueden ser muy largas, puedes añadir grupos para organizar datos relacionados entre sí.
      • Gráficos
      • Tablas cruzadas: muestra datos en dos dimensiones.
      • Cartas y Documentos: noticias, formularios de cartas y otros documentos de texto son fáciles de crear con BIRT. los documentos pueden incluir testo, formato, listas, gráficos y mucho más.
      • Informes compuestos: muchos informes necesitan combinar todo lo anterios en un único documento.
      Formatos de salida: lista de datos, Graficos, tablas cruzadas, HTML, HTML paginado, PDF, WORD, XLS, y PostScript.

      Puntos positivos:

      • A diferencia de Jasper donde el dxml (que contiene información de diseño del informe) tiene que ser compilado cada vez a un archivo .jasper antes de convertir el informe en el formato de salida requerido.
      • BIRT separa la colección de datos del diseño, esto proporciona una serie de ventajas como: múltiples fuentes de datos.
      • BIRT soporta la reusabilidad con plantillas y librerias. La personalización de plantillas ayuda a controlar estrechamente la capacidad de redaccion de informes.
      Informes en Java, un estudio comparativo

      Birt vs Jasper

      ARTICULO 1:  Jasper or BIRT?

      Birt -> Eclipse
      Jasper -> NetBeans

      Birt -> Actuate
      Jasper -> Japersoft

      Subinformes
      Significa: informe dentro de un informe. Jasper no permite crear dos consultas SQL en el mismo informe, por eso es necesario crear un subinforme. También se usan para organizar una página. Birt no tiene esta característica, te permite realizar más de una consulta SQL en el mismo informe, esto implica complejidad para el informe al poder poner muchas sentencias SQL.
      Los subinformes permiten la creación de informes más complejos y simplifican el trabajo de diseño. Son muy útiles cuando la estructura de un informe único no es suficiente para describir la complejidad del documento de salida deseado. Uno puede solapar subinformes o crear informes que contienen subinformes a sí mismos, a cualquier nivel de anidamiento. Cualquier plantilla de informe puede ser utilizada como un subinforme cuando se incorpora a otro informe, sin cambiar nada.

      Scriplets
      El informe puede llamar al método Java desde su aplicación. Scriptlets son secuencias de código Java que se ejecutan cada vez que se produce un evento en el informe. A través de scriptlets, los usuarios ahora tienen la posibilidad de afectar a los valores almacenados en las variables de informe. Los scriplets trabajan con las variables del informe, por tanto es muy importante controlar el momento exacto de cuando se ejecutan. JasperReports permite la ejecución de código Java personalizado antes o después de inicializar las variables del informe, de acuerdo a su tipo de reset: Informe, página, columna o grupo.

      Paso de parámetros desde un jsp
      Los parámetros son referencias a objetos que se pasan al informe.

      Código de barras
      Código de barras es la tendencia actual de procesos de negocio para acelerar el procesamiento de datos o de entrada de datos. Es muy útil disponer del código de barras en los informes.

      Ventajas de BIRT
      1. Funciones / fórmula – más amplio en comparación con Jasper.
      2. Basado en Eclipse IDE

      ARTICULO 2: BIRT Vs Jasper Report A Comparitive Study

      Jasper es un simple jar de 1.2 MB, que puede ser insertado en cualquier aplicación java.
      Birt viene con una gran cantidad de características en forma de plug-in, pero se utilizan muy pocas.

      Data source (Fuente de datos)
      Birt crea una nueva conexión a través de una fuente de datos mediante scripts. Sin embargo, Jasper utiliza la session factory existente en la aplicación.
      Birt no usa JNDI, utiliza ODA. El data source es definido dentro del informe.

      ARTICULO 3: Java Open Source reporting frameworks. Evaluation results

      Artículo que compara tres aplicaciones para generar informes. Apoya significativamente a Birt. Lectura imprescindible.

      CONCLUSIONES

      Leyendo este último artículo, considero que se pega de tortas con los otros que antes he mencionado, pero supongo que será un problema de las versiones. Pues dice que Birt si hace uso de JNDI, que tiene paso de parámetros, que jasper no tiene scripts…

      Una vez leido estos artículos, mi opinión es que se quedan obsoletos con las versiones actuales. A principios del 2010, las versiones existentes son: Birt 2.3.2, Jasper 3.7.0. Habrá que realizar un estudio más profundo con las nuevas versiones.

      Birt vs Jasper