Java Reporting Tools: une comparaison

1. Vue d'ensemble

Lorsque nous parlons d' outils de reporting , de nombreux logiciels couvrent ce domaine. Cependant, la plupart d'entre eux sont des plateformes de Business Intelligence à part entière ou des services Cloud .

Mais que se passe-t-il si nous voulons simplement ajouter des fonctionnalités de reporting à notre application en tant que bibliothèque? Nous allons passer en revue ici quelques outils de reporting Java bien adaptés à cet effet.

Nous nous concentrerons principalement sur ces outils open-source:

  • BIRT
  • Rapports Jasper
  • Pentaho

De plus, nous analyserons brièvement les outils commerciaux suivants:

  • FineReport
  • Rapport Logi (anciennement JReport )
  • Rapport Mill

2. Conception de rapports

Dans cette section, nous verrons comment nous pouvons concevoir visuellement des rapports et jouer avec nos données. Notez que nous ne ferons référence qu'aux outils open source dans cette partie.

2.1. Rédacteurs visuels

Les trois outils incluent un éditeur WYSIWIG avec des capacités de prévisualisation de rapport.

BIRT Report Designer et Jaspersoft Studio sont des outils basés sur Eclipse RCP. C'est un bon point pour la plupart d'entre nous, développeurs Java, car nous connaissons peut-être l'environnement Eclipse. Contrairement à ceux-ci, Pentaho Report Designer a mal vieilli .

De plus, il existe une fonctionnalité intéressante supplémentaire à propos de Jaspersoft Studio : nous pouvons publier nos rapports directement sur leur Jasper Reports Server (le système de gestion des rapports).

2.2. Ensembles de données

Comme pour tous les outils de reporting, nous pouvons récupérer des ensembles de données en interrogeant une source de données (voir ci-dessous). Ensuite, nous pouvons les transformer en champs de rapport, créer des champs calculés ou utiliser des formules d'agrégation.

En plus de cela, il est intéressant de comparer la façon dont nous pouvons gérer plusieurs ensembles de données, car nous pourrions en avoir besoin de plusieurs si nos données proviennent de différentes requêtes ou même de sources de données différentes :

  • BIRT offre la solution la plus simple car nous pouvons avoir plusieurs ensembles de données dans le même rapport
  • Avec Jasper Reports et Pentaho , nous devons créer un sous-rapport séparé à chaque fois, ce qui peut être assez délicat

2.3. Graphiques et éléments visuels

Tous les outils fournissent des éléments simples comme des formes et des images, ainsi que toutes les saveurs du graphique: lignes , zones , tartes , radar , anneau , etc. Tous supportent les tableaux croisés aussi.

Cependant, Jasper Reports fournit la collection d'éléments visuels la plus riche . Il ajoute à la liste ci-dessus les cartes , les graphiques sparkline , les pyramides et les diagrammes de Gantt .

2.4. Rapports de style

Maintenant, comparons le positionnement et le dimensionnement des éléments dans la page:

  • Tous les outils fournissent le positionnement des pixels
  • BIRT et Pentaho fournissent également un positionnement de type HTML (table, bloc, en ligne)
  • Aucun d'entre eux ne prend en charge la flexbox ou le système de grille de type CSS pour contrôler la taille des éléments

De plus, lorsque nous devons gérer plusieurs rapports, nous souhaitons peut-être partager le même thème visuel:

  • Jasper Reports fournit des fichiers de thème avec une syntaxe XML-CSS
  • BIRT peut importer des feuilles de style CSS dans le système de conception
  • Avec Pentaho , nous ne pouvons ajouter que des feuilles de style CSS dans l'en-tête de page. Il est donc difficile de les mélanger avec le système de conception interne

3. Rendu des rapports

Maintenant que nous avons vu comment concevoir des rapports, comparons comment nous pouvons les rendre par programmation.

3.1. Installation

Notons tout d'abord que tous les outils ont été conçus pour s'intégrer facilement dans un projet Java .

Pour commencer, vous pouvez consulter nos articles dédiés à BIRT et Jasper Reports. Pour Pentaho, il existe une page d'aide et des exemples de code gratuits.

Ensuite, pour chacun de ces outils, nous allons connecter le moteur de rapport à nos données d'application.

3.2. La source de données

La première question que nous devons nous poser est la suivante: comment pouvons-nous connecter le moteur de rapport à la source de données de notre projet?

  • Jasper Reports : nous l'ajoutons simplement comme paramètre de la méthode fillReport
  • La solution BIRT pour cela est un peu plus complexe: nous devrions modifier notre rapport pour définir les attributs de la source de données comme paramètres
  • Pentaho a ici un gros inconvénient : à moins d'acheter leur logiciel commercial PDI , nous devons utiliser une source de données JNDI , ce qui est plus difficile à mettre en place

En parlant de sources de données, quels types sont pris en charge?

  • Les trois outils prennent en charge les types les plus courants: JDBC , JNDI , POJO , CSV , XML et MongoDB
  • L'API REST est une exigence pour les projets modernes, cependant, aucun d'entre eux ne la prend en charge de manière native
    • avec BIRT , on devrait coder un script Groovy
    • Jasper Reports nécessite un plugin gratuit supplémentaire
    • avec Pentaho , nous devrions coder un script Groovy ou acquérir le logiciel commercial PDI
  • Les fichiers JSON sont pris en charge nativement par Jasper Reports et Pentaho , mais BIRT nécessitera une bibliothèque d'analyseur Java externe
  • Nous pouvons trouver la liste de comparaison complète dans cette matrice

3.3. Paramètres et personnalisation du runtime

Comme nous avons connecté notre rapport à notre source de données, rendons quelques données!

L'important maintenant est de savoir comment récupérer les données de nos utilisateurs finaux. Pour ce faire, nous pouvons passer des paramètres à la méthode de rendu. Ces paramètres auraient dû être définis lors de la conception du rapport, pas lors de l'exécution. Mais que pouvons-nous faire si, par exemple, notre ensemble de données est basé sur différentes requêtes en fonction du contexte de l'utilisateur final?

Avec Pentaho et Jasper Reports , il n'est tout simplement pas possible de le faire , car le fichier de rapport est binaire et il n'y a pas de SDK Java pour les modifier. Par comparaison, les rapports BIRT sont des fichiers XML simples . De plus, nous pouvons utiliser une API Java pour les modifier, il est donc très facile de tout personnaliser au moment de l'exécution.

3.4. Formats de sortie et clients Javascript

Heureusement, la plupart des formats courants sont pris en charge par tous les outils: HTML, PDF, Excel, CSV, texte brut et RTF . De nos jours, nous pouvons également nous demander comment nous pouvons intégrer le résultat du rapport directement dans nos pages Web. Nous ne mentionnerons cependant pas l'inclusion approximative d'un visualiseur PDF.

  • La meilleure solution consiste à utiliser des clients Javascript pour rendre les rapports directement dans un élément HTML. Pour BIRT, le client Javascript est Actuate JSAPI et pour Jasper Reports , nous devrions utiliser JRIO.js
  • Pentaho ne fournit rien d'autre que l'intégration iFrame. Cette solution fonctionne mais peut présenter de sérieux inconvénients

3.5. Outils de rendu autonomes

Outre l'intégration de notre rapport dans une page Web, nous pourrions également être intéressés par un serveur de rendu prêt à l'emploi. Chaque outil propose sa propre solution:

  • BIRT Viewer est un exemple d' application Web léger permettant d'exécuter desrapports BIRT à la demande. Il est open-source mais n'inclut pas les fonctionnalités de gestion des rapports
  • pour Pentaho et Jasper Report , il n'y a que des progiciels commerciaux

4. État et activité des projets

Tout d'abord, un mot sur les licences. BIRT est sous EPL , Jasper Reports sous LGPLv3 et Pentaho sous LGPLv2.1 . Ainsi, nous pouvons intégrer toutes ces bibliothèques dans nos propres produits, même s'ils sont commerciaux.

Ensuite, on peut se demander comment ces projets open source sont maintenus, et si la communauté est toujours active:

  • Jasper Reports dispose d'un référentiel bien entretenu, avec une activité médium stable par son éditeur TIBCO Software
  • Le référentiel BIRT reste maintenu, mais son activité est très faible depuis 2015 quand OpenText a acquis son éditeur Actuate
  • De même, l' activité du référentiel Pentaho est très faible depuis l'acquisition d'Hitachi-Vantara en 2015

Nous pouvons le confirmer en utilisant les tendances Stackoverflow. La plus faible popularité concerne BIRT et Pentaho, mais est modérée pour Jasper Reports .

Les trois outils de reporting Java ont perdu de leur popularité au cours des 5 dernières années, bien qu'ils restent stables pour le moment. Nous pouvons l'expliquer par l'émergence des offres Cloud et Javascript.

5. Outils de création de rapports Java commerciaux

Outre les solutions open source, il existe également des options commerciales disponibles qui méritent d'être mentionnées.

5.1. Bon rapport

Fine Report a été initialement conçu pour être exécuté en tant que serveur autonome. Heureusement, nous pouvons l'inclure dans notre projet si nous voulons l'utiliser. Nous devons copier manuellement tous les JAR et toutes les ressources dans notre WAR, comme décrit dans leur procédure.

Après cela, nous pouvons voir l' outil de plateforme décisionnelle disponible sous forme d'URL dans notre projet. À partir de cette URL, nous pouvons exécuter des rapports directement dans la vue Web fournie, un iFrame ou en utilisant leur client Javascript. Cependant, nous ne pouvons pas générer de rapports par programme.

Une autre limitation énorme est le runtime cible. La version 10 prend uniquement en charge Java 8 et Tomcat 8.x.

5.2. Rapport Logi (anciennement JReport)

Tout comme Fine Report, Logi Report a été conçu pour être exécuté en tant que serveur autonome, mais nous pouvons l'intégrer dans le cadre de notre projet WAR existant. Ainsi, nous serons confrontés à la même limitation qu'avec Fine Report : nous ne pouvons pas générer de rapports par programmation .

Contrairement à Fine Report. cependant, Logi Report prend en charge presque tous les conteneurs de servlet et Java 8 à 13.

5.3. Rapports ReportMill

Enfin , ReportMill mérite d'être mentionné car nous pouvons l'intégrer facilement dans chaque application Java . De plus, comme BIRT , il est très flexible: nous pouvons personnaliser les rapports à l'exécution car il s'agit de fichiers XML simples .

Cependant, nous pouvons voir tout de suite que ReportMill a vieilli et dispose également d'un ensemble de fonctionnalités médiocres par rapport aux autres solutions.

6. Conclusion

Dans cet article, nous avons passé en revue certains des outils de reporting Java les plus connus et comparé leurs fonctionnalités.

En conclusion, nous pouvons choisir l'un de ces outils de reporting Java en fonction de nos besoins:

Nous choisirons BIRT :

  • Pour une bibliothèque simple pour remplacer une solution maison existante
  • Pour sa plus grande flexibilité et son fort potentiel de personnalisation

Nous choisirons Jasper Reports :

  • Si nous avons besoin d'une bibliothèque de rapports compatible avec un système de gestion de rapports à part entière
  • Si nous voulons parier sur la meilleure évolution et support à long terme