Java Reporting Tools: ein Vergleich

1. Übersicht

Wenn wir über Berichterstellungstools sprechen , deckt eine Menge Software diesen Bereich ab. Bei den meisten handelt es sich jedoch um vollwertige Business Intelligence-Plattformen oder Cloud-Dienste .

Was passiert jedoch, wenn wir unserer Anwendung als Bibliothek nur einige Berichtsfunktionen hinzufügen möchten? Wir werden hier einige Java-Berichterstellungstools überprüfen, die für diesen Zweck gut geeignet sind.

Wir werden uns hauptsächlich auf diese Open-Source-Tools konzentrieren:

  • GEBURT
  • Jasper berichtet
  • Pentaho

Darüber hinaus werden wir die folgenden kommerziellen Tools kurz analysieren:

  • FineReport
  • Logi Report (ehemals JReport )
  • Report Mill

2. Entwerfen von Berichten

In diesem Abschnitt erfahren Sie, wie wir Berichte visuell entwerfen und mit unseren Daten spielen können. Beachten Sie, dass wir uns in diesem Teil nur auf Open-Source-Tools beziehen.

2.1. Visuelle Editoren

Alle drei Tools enthalten einen WYSIWIG-Editor mit Funktionen zur Berichtsvorschau.

BIRT Report Designer und Jaspersoft Studio sind Tools, die auf Eclipse RCP basieren. Dies ist ein guter Punkt für die meisten von uns Java-Entwicklern, da wir möglicherweise mit der Eclipse-Umgebung vertraut sind. Im Gegensatz zu diesen ist Pentaho Report Designer optisch schlecht gealtert .

Darüber hinaus gibt es eine weitere interessante Funktion von Jaspersoft Studio : Wir können unsere Berichte direkt auf ihrem Jasper Reports Server (dem Berichtsverwaltungssystem) veröffentlichen.

2.2. Datensätze

Wie bei allen Berichterstellungstools können wir Datensätze abrufen, indem wir eine Datenquelle abfragen (siehe unten). Anschließend können wir sie in Berichtsfelder umwandeln, berechnete Felder erstellen oder Aggregationsformeln verwenden.

Außerdem ist es interessant zu vergleichen, wie wir mehrere Datensätze verwalten können, da wir möglicherweise mehrere davon benötigen, wenn unsere Daten aus unterschiedlichen Abfragen oder sogar unterschiedlichen Datenquellen stammen :

  • BIRT bietet die einfachste Lösung, da mehrere Datensätze im selben Bericht enthalten sein können
  • Bei Jasper Reports und Pentaho müssen wir jedes Mal einen separaten Unterbericht erstellen, was sehr schwierig sein kann

2.3. Diagramme und visuelle Elemente

Alle Werkzeuge bieten einfache Elemente wie Formen und Bilder sowie jede Diagrammvariante: Linien , Bereiche , Torten , Radar , Ring usw. Alle unterstützen auch Kreuztabellen.

Allerdings Jasper Reports bietet die umfangreichste visuelle Elemente Sammlung . Es fügt der obigen Liste Karten , Sparklines , Pyramiden und Gantt-Diagramme hinzu .

2.4. Styling-Berichte

Vergleichen wir nun die Positionierung und Größe der Elemente auf der Seite:

  • Alle Werkzeuge bieten eine Pixelpositionierung
  • BIRT und Pentaho bieten auch eine HTML-ähnliche Positionierung (Tabelle, Block, Inline).
  • Keiner von ihnen unterstützt CSS-ähnliche Flexbox- oder Rastersysteme zur Steuerung der Elementgröße

Wenn wir mehrere Berichte verwalten müssen, möchten wir möglicherweise dasselbe visuelle Thema verwenden:

  • Jasper Reports bietet Themendateien mit XML-CSS-Syntax
  • BIRT kann CSS-Stylesheets in das Designsystem importieren
  • Mit Pentaho können wir nur CSS-Stylesheets in den Seitenkopf einfügen. Daher ist es schwierig, sie mit dem internen Designsystem zu mischen

3. Berichte rendern

Nachdem wir nun gesehen haben, wie Berichte erstellt werden, vergleichen wir, wie wir sie programmgesteuert rendern können.

3.1. Installation

Beachten Sie zunächst, dass alle Tools so konzipiert wurden, dass sie problemlos in ein Java-Projekt eingebettet werden können .

Zu Beginn können Sie sich unsere speziellen Artikel zu BIRT- und Jasper-Berichten ansehen. Für Pentaho gibt es eine Hilfeseite und kostenlose Codebeispiele.

Als Nächstes verbinden wir für jedes dieser Tools die Berichts-Engine mit unseren Anwendungsdaten.

3.2. Datenquelle

Die erste Frage, die wir stellen sollten, lautet: Wie können wir die Berichts-Engine mit unserer Projektdatenquelle verbinden?

  • Jasper Reports : Wir fügen es einfach als Parameter der fillReport- Methode hinzu
  • Die BIRT- Lösung hierfür ist etwas komplexer: Wir sollten unseren Bericht ändern, um die Datenquellenattribute als Parameter festzulegen
  • Pentaho hat hier einen großen Nachteil : Wenn wir keine kommerzielle PDI- Software kaufen , müssen wir eine JNDI-Datenquelle verwenden , die schwieriger einzurichten ist

Apropos Datenquellen, welche Typen werden unterstützt?

  • Alle drei Tools unterstützen die gängigsten Typen: JDBC , JNDI , POJOs , CSV , XML und MongoDB
  • Die REST-API ist eine Voraussetzung für moderne Projekte, wird jedoch von keinem von ihnen nativ unterstützt
    • Mit BIRT sollten wir ein Groovy-Skript codieren
    • Für Jasper Reports ist ein zusätzliches kostenloses Plugin erforderlich
    • Mit Pentaho sollten wir ein Groovy-Skript codieren oder die kommerzielle PDI- Software erwerben
  • JSON-Dateien werden von Jasper Reports und Pentaho nativ unterstützt , für BIRT ist jedoch eine externe Java-Parser-Bibliothek erforderlich
  • Die vollständige Vergleichsliste finden Sie in dieser Matrix

3.3. Parameter und Laufzeitanpassung

Nachdem wir unseren Bericht mit unserer Datenquelle verbunden haben, lassen Sie uns einige Daten rendern!

Das Wichtigste ist jetzt, wie wir unsere Endbenutzerdaten abrufen können. Dazu können wir Parameter an die Rendering-Methode übergeben. Diese Parameter sollten beim Entwurf des Berichts definiert worden sein, nicht zur Laufzeit. Was können wir jedoch tun, wenn unser Datensatz beispielsweise je nach Endbenutzerkontext auf unterschiedlichen Abfragen basiert?

Mit Pentaho und Jasper Reports ist dies einfach nicht möglich , da die Berichtsdatei binär ist und es kein Java SDK gibt, um sie zu ändern. Im Vergleich dazu sind BIRT- Berichte reine XML-Dateien . Darüber hinaus können wir eine Java-API verwenden, um sie zu ändern, sodass es sehr einfach ist, alles zur Laufzeit anzupassen.

3.4. Ausgabeformate und Javascript-Clients

Zum Glück werden die meisten gängigen Formate von allen Tools unterstützt: HTML, PDF, Excel, CSV, Klartext und RTF . Heutzutage fragen wir uns möglicherweise auch, wie wir das Berichtsergebnis direkt in unsere Webseiten integrieren können. Wir werden jedoch die grobe Aufnahme eines PDF-Visualisierers nicht erwähnen.

  • Die beste Lösung besteht darin, Javascript- Clients zu verwenden, um Berichte direkt in ein HTML-Element zu rendern. Für BIRT ist der Javascript-Client Actuate JSAPI und für Jasper Reports sollten wir JRIO.js verwenden
  • Pentaho bietet nur die iFrame-Integration. Diese Lösung funktioniert, kann jedoch schwerwiegende Nachteile haben

3.5. Standalone-Rendering-Tools

Neben der Integration unseres Berichts in eine Webseite könnten wir auch an einem sofort einsatzbereiten Rendering-Server interessiert sein. Jedes Tool bietet seine eigene Lösung:

  • BIRT Viewer ist ein leichtes Beispiel für Webanwendungen zum Ausführen von BIRT- Berichten bei Bedarf. Es ist Open Source, enthält jedoch keine Berichtsverwaltungsfunktionen
  • Für Pentaho und Jasper Report gibt es nur kommerzielle Softwarepakete

4. Projektstatus und Aktivität

Zunächst ein Wort zu Lizenzen. BIRT steht unter EPL , Jasper Reports unter LGPLv3 und Pentaho unter LGPLv2.1 . Auf diese Weise können wir alle diese Bibliotheken in unsere eigenen Produkte einbetten, auch wenn sie kommerziell sind.

Dann können wir uns fragen, wie diese Open Source-Projekte gepflegt werden und ob die Community noch aktiv ist:

  • Jasper Reports verfügt über ein gut gepflegtes Repository mit einer stabilen mittleren Aktivität des Editors TIBCO Software
  • Das BIRT- Repository bleibt erhalten, aber seine Aktivität ist seit 2015, als OpenText seinen Editor Actuate übernahm, sehr gering
  • In ähnlicher Weise ist die Aktivität des Pentaho- Repositorys seit der Übernahme von Hitachi-Vantara im Jahr 2015 sehr gering

Wir können dies anhand von Stackoverflow-Trends bestätigen. Die geringste Beliebtheit ist bei BIRT und Pentaho, bei Jasper Reports jedoch moderat .

Alle drei Java-Berichterstellungstools haben in den letzten 5 Jahren an Popularität verloren, bleiben jedoch vorerst stabil. Wir können dies durch die Entstehung der Cloud- und Javascript-Angebote erklären.

5. Kommerzielle Java Reporting Tools

Neben den Open-Source-Lösungen stehen auch einige erwähnenswerte kommerzielle Optionen zur Verfügung.

5.1. Feiner Bericht

Fine Report wurde ursprünglich für die Ausführung als eigenständiger Server entwickelt. Glücklicherweise können wir es in unser Projekt aufnehmen, wenn wir es verwenden möchten. Wir müssen alle JARs und Ressourcen manuell in unser WAR kopieren, wie in ihrem Verfahren beschrieben.

Danach können wir das Tool für die Entscheidungsplattform als URL in unserem Projekt anzeigen. Über diese URL können wir Berichte direkt in der bereitgestellten Webansicht , einem iFrame oder mithilfe ihres Javascript-Clients ausführen . Wir können jedoch keine programmgesteuerten Berichte erstellen.

Eine weitere große Einschränkung ist die Ziellaufzeit. Version 10 unterstützt nur Java 8 und Tomcat 8.x.

5.2. Logi Report (ehemals JReport)

Wie Fine Report wurde Logi Report so konzipiert, dass es als eigenständiger Server ausgeführt werden kann. Wir können es jedoch als Teil unseres bestehenden WAR-Projekts integrieren. Daher haben wir die gleiche Einschränkung wie bei Fine Report : Wir können keine Berichte programmgesteuert generieren .

Im Gegensatz zu Fine Report. Logi Report unterstützt jedoch fast alle Servlet-Container und Java 8 bis 13.

5.3. ReportMill Reporting

Schließlich ist ReportMill erwähnenswert, da wir es problemlos in jede Java-Anwendung einbetten können . Ebenso wie BIRT ist es sehr flexibel: Wir können Berichte zur Laufzeit anpassen, da es sich um einfache XML-Dateien handelt .

Wir können jedoch sofort feststellen, dass ReportMill gealtert ist und im Vergleich zu den anderen Lösungen nur wenige Funktionen aufweist.

6. Fazit

In diesem Artikel haben wir einige der bekanntesten Java-Berichterstellungstools durchgesehen und ihre Funktionen verglichen.

Als Fazit können wir abhängig von unseren Anforderungen eines dieser Java Reporting Tools auswählen:

Wir werden BIRT wählen :

  • Für eine einfache Bibliothek als Ersatz für eine vorhandene hausgemachte Lösung
  • Für seine größte Flexibilität und sein hohes Anpassungspotential

Wir wählen Jasper Reports :

  • Wenn wir eine Berichtsbibliothek benötigen, die mit einem vollwertigen Berichtsverwaltungssystem kompatibel ist
  • Wenn wir auf die beste langfristige Entwicklung und Unterstützung wetten wollen