Java-rapporteringsværktøjer: en sammenligning

1. Oversigt

Når vi taler om Rapporteringsværktøjer, meget software dækker dette område. De fleste af dem er dog fuldgyldige Business Intelligence-platforme eller Cloud-tjenester.

Men hvad sker der, hvis vi bare vil tilføje nogle rapporteringsfunktioner til vores applikation som et bibliotek? Vi gennemgår her nogle Java rapporteringsværktøjer velegnet til dette formål.

Vi vil primært fokusere på disse open source-værktøjer:

  • BIRT
  • Jasper rapporter
  • Pentaho

Derudover vil vi kort analysere følgende kommercielle værktøjer:

  • FineReport
  • Logi-rapport (tidligere JRapport)
  • Rapporter Mill

2. Design af rapporter

Gennem dette afsnit gennemgår vi, hvordan vi visuelt kan designe rapporter og lege med vores data. Bemærk, at vi kun henviser til open source-værktøjer i denne del.

2.1. Visuelle redaktører

Alle de tre værktøjer inkluderer en WYSIWIG-editor med mulighed for forhåndsvisning af rapporter.

BIRT Report Designer og Jaspersoft Studio er værktøjer bygget på Eclipse RCP. Dette er et godt punkt for de fleste af os Java-udviklere, da vi måske er bekendt med Eclipse-miljøet. I modsætning til dem, Pentaho Report Designer har visuelt ældet dårligt.

Der er også en ekstra interessant funktion om Jaspersoft Studio: vi kan offentliggøre vores rapporter direkte på deres Jasper Rapporter Server (rapportstyringssystemet).

2.2. Datasæt

Som med alle rapporteringsværktøjer kan vi hente datasæt ved at forespørge a datakilde (se nedenunder). Derefter kan vi omdanne dem til rapportfelter, oprette beregnede felter eller bruge aggregeringsformler.

Udover dette er det interessant at sammenligne hvordan vi kan håndtere flere datasæt da vi muligvis har brug for flere af dem, hvis vores data kommer fra forskellige forespørgsler eller endda forskellige data kilder:

  • BIRT tilbyder den nemmeste løsning, da vi kan have flere datasæt i den samme rapport
  • Med Jasper rapporter og Pentaho, skal vi oprette en adskilt underrapport hver gang, hvilket kan være ret vanskeligt

2.3. Diagrammer og visuelle elementer

Alle værktøjerne giver enkle elementer som figurer og billeder og også enhver diagramsmag: linjer, områder, tærter, radar, ringosv. Alle understøtter også krydsfaner.

Imidlertid, Jasper rapporter giver den rigeste samling af visuelle elementer. Det føjes til ovenstående liste Kort, sparklines, pyramiderog Gantt-diagrammer.

2.4. Styling Rapporter

Lad os nu sammenligne placeringen og størrelsen af ​​elementer på siden:

  • Alle værktøjerne giver pixelpositionering
  • BIRT og Pentaho giver også HTML-lignende placering (tabel, blok, inline)
  • Ingen af ​​dem understøtter CSS-lignende flexbox eller grid system for at kontrollere elementernes størrelse

Når vi skal styre flere rapporter, kan vi også dele det samme visuelle tema:

  • Jasper rapporter giver temafiler med XML-CSS-syntaks
  • BIRT kan importere CSS-stilark til designsystemet
  • Med Pentaho, kan vi kun tilføje CSS-stilark i sidehovedet. Så det er svært at blande dem med det interne designsystem

3. Renderingsrapporter

Nu, hvor vi har set, hvordan vi designer rapporter, lad os sammenligne, hvordan vi kan gengive dem programmatisk.

3.1. Installation

Lad os først bemærke det alle værktøjerne er designet til let at blive integreret i et Java-projekt.

For at komme i gang kan du se på vores dedikerede artikler om BIRT og Jasper Reports. For Pentaho er der en hjælpeside og gratis kodeeksempler.

Dernæst forbinder vi for hvert af disse værktøjer rapportmotoren til vores applikationsdata.

3.2. Datakilde

Det første spørgsmål, vi skal stille, er: hvordan kan vi forbinde rapportmotoren til vores projektdatakilde?

  • Jasper rapporter: vi tilføjer det simpelthen som en parameter for fillReport metode
  • BIRT løsningen på dette er lidt mere kompleks: vi bør ændre vores rapport for at indstille datakildeattributterne som parametre
  • Pentaho har en stor ulempe her: medmindre vi køber deres PDI kommerciel software vi er nødt til at bruge en JNDI-datakilde, som er sværere at konfigurere

Apropos datakilder, hvilke typer understøttes?

  • Alle tre værktøjer understøtter de mest almindelige typer: JDBC, JNDI, POJO'er, CSV, XML og MongoDB
  • REST API er et krav til moderne projekter, men ingen af ​​dem understøtter det indfødt
    • med BIRT, skal vi kode a Groovy script
    • Jasper rapporter kræver et ekstra gratis plugin
    • med Pentaho, skal vi kode a Groovy script eller erhverve PDI kommerciel software
  • JSON-filer understøttes indbygget af Jasper rapporter og Pentaho, men BIRT kræver et eksternt Java-parserbibliotek
  • Vi kan finde den komplette sammenligningsliste i denne matrix

3.3. Parametre og tilpasning af kørselstid

Da vi har knyttet vores rapport til vores datakilde, lad os gengive nogle data!

Det vigtige er nu, hvordan man henter vores slutbrugerdata. For at gøre dette kan vi videregive parametre til gengivelsesmetoden. Disse parametre skulle have været defineret, da vi designede rapporten, ikke ved kørsel. Men hvad kan vi gøre, hvis f.eks. Vores datasæt er baseret på forskellige forespørgsler afhængigt af slutbrugerkonteksten?

Med Pentaho og Jasper rapporter, det er simpelthen ikke muligt at gøre det, da rapportfilen er binær, og der ikke er nogen Java SDK til at ændre dem. Til sammenligning BIRT rapporter er almindelige XML-filer. Desuden kan vi bruge en Java API til at ændre dem, så det er meget let at tilpasse alt ved kørsel.

3.4. Outputformater og Javascript-klienter

Heldigvis understøttes de fleste af de almindelige formater af alle værktøjerne: HTML, PDF, Excel, CSV, almindelig tekst, og RTF. I dag kan vi også spørge, hvordan vi kan integrere rapportresultatet direkte på vores websider. Vi nævner dog ikke den grove inkludering af en PDF-visualiseringsenhed.

  • Den bedste løsning er at bruge Javascript klienter til at gengive rapporter direkte til et HTML-element. Til BIRT, Javascript-klienten er Aktiver JSAPI og til Jasper rapporter, skal vi bruge JRIO.js
  • Pentaho giver ikke andet end iFrame-integration. Denne løsning fungerer, men kan have alvorlige ulemper

3.5. Selvstændige gengivelsesværktøjer

Udover at integrere vores rapport på en webside kan vi også være interesseret i at have en out-of-the-box gengivelsesserver. Hvert værktøj giver sin egen løsning:

  • BIRT Viewerer en letvægts webapplikation prøve at udføre BIRT rapporterer on-demand. Det er open source, men inkluderer ikke rapportstyringsfunktioner
  • til Pentaho og Jasper-rapport, der er kun kommercielle softwarepakker

4. Projektets status og aktivitet

Først et ord om licenser. BIRT er under EPL, Jasper rapporter under LGPLv3og Pentaho under LGPLv2.1. Således kan vi integrere alle disse biblioteker i vores egne produkter, selvom de er kommercielle.

Derefter kan vi spørge os selv, hvordan disse open source-projekter opretholdes, og om samfundet stadig er aktivt:

  • Jasper rapporter har et velholdt lager, med en stabil mediumaktivitet af dets redaktør TIBCO Software
  • BIRT lager forbliver vedligeholdt, men dens aktiviteten er meget lav siden 2015, da OpenText erhvervede sin redaktør Actuate
  • Tilsvarende Pentaho arkivaktivitet er meget lav siden overtagelse af Hitachi-Vantara i 2015

Vi kan bekræfte dette ved hjælp af Stackoverflow-tendenser. Den laveste popularitet er for BIRT og Pentaho, men er moderat til Jasper rapporter.

Alle tre Java-rapporteringsværktøjer er faldet i popularitet de sidste 5 år selvom de forbliver stabile for nu Vi kan forklare dette ved fremkomsten af ​​Cloud og Javascript-tilbud.

5. Kommercielle Java-rapporteringsværktøjer

Udover open source-løsninger er der også nogle kommercielle muligheder, der er værd at nævne.

5.1. Fin rapport

Fin rapport er oprindeligt designet til at blive udført som en enkeltstående server. Heldigvis er vi i stand til at medtage det som en del af vores projekt, hvis vi vil bruge det. Vi er nødt til manuelt at kopiere alle JAR'er og ressourcer til vores WAR, som beskrevet i deres procedure.

Efter at have gjort dette, kan vi se Beslutningsplatform værktøj tilgængeligt som en URL i vores projekt. Fra denne URL kan vi udføre rapporter direkte i den medfølgende webvisning, en iFrameeller ved hjælp af deres Javascript-klient. Vi kan dog ikke generere rapporter programmatisk.

En anden enorm begrænsning er målet runtime. Version 10 understøtter kun Java 8 og Tomcat 8.x.

5.2. Logi-rapport (tidligere JReport)

Ligesom Fine Report er Logi Report designet til at blive udført som en enkeltstående server, men vi kan integrere den som en del af vores eksisterende WAR-projekt. Således vil vi stå over for den samme begrænsning som med Fin rapport: vi kan ikke generere rapporter programmatisk.

I modsætning til Fin rapport. dog understøtter Logi Report næsten alle servletcontainere og Java 8 til 13.

5.3. ReportMill Rapportering

Langt om længe, ReportMill er værd at nævne, fordi vi kan integrere det glat i alle Java-applikationer. Også ligesom BIRT, det er meget fleksibelt: Vi kan tilpasse rapporter ved kørsel, da de er almindelige XML-filer.

Vi kan dog med det samme se, at ReportMill er ældet og også har et dårligt sæt funktioner sammenlignet med de andre løsninger.

6. Konklusion

I denne artikel gennemgik vi nogle af de mest kendte Java-rapporteringsværktøjer og sammenlignede deres funktioner.

Som en konklusion kan vi vælge et af disse Java-rapporteringsværktøjer afhængigt af vores krav:

Vi vælger BIRT:

  • For et simpelt bibliotek at erstatte en eksisterende hjemmelavet løsning
  • For dets største fleksibilitet og højt tilpasningspotentiale

Vi vælger Jasper-rapporter:

  • Hvis vi har brug for et rapporteringsbibliotek, der er kompatibelt med en fuldt ud rapporteringsstyringssystem
  • Hvis vi vil satse på bedste langsigtede udvikling og support

$config[zx-auto] not found$config[zx-overlay] not found