Java-rapporteringsverktøy: en sammenligning

1. Oversikt

Når vi snakker om Rapporteringsverktøy, mye programvare dekker dette området. Imidlertid er de fleste av dem fullverdige Business Intelligence-plattformer eller Skytjenester.

Men hva skjer hvis vi bare vil legge til noen rapporteringsfunksjoner i applikasjonen vår som et bibliotek? Vi vil gjennomgå noen her Java rapporteringsverktøy godt egnet for dette formålet.

Vi vil hovedsakelig fokusere på disse open source-verktøyene:

  • BIRT
  • Jasper Rapporter
  • Pentaho

I tillegg vil vi kort analysere følgende kommersielle verktøy:

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

2. Designe rapporter

Gjennom denne delen vil vi gjennomgå hvordan vi visuelt kan utforme rapporter og spille med dataene våre. Merk at vi bare refererer til åpen kildekodeverktøy i denne delen.

2.1. Visuelle redaktører

Alle de tre verktøyene inkluderer en WYSIWIG-editor med forhåndsvisning av rapporter.

BIRT Report Designer og Jaspersoft Studio er verktøy bygget på Eclipse RCP. Dette er et godt poeng for de fleste av oss Java-utviklere, ettersom vi kanskje er kjent med Eclipse-miljøet. I motsetning til de, Pentaho Report Designer har eldet visuelt dårlig.

Det er også en ekstra interessant funksjon om Jaspersoft Studio: vi kan publisere rapportene våre direkte på deres Jasper Reports Server (rapporteringsstyringssystemet).

2.2. Datasett

Som med alle rapporteringsverktøy, kan vi hente datasett ved å spørre a datakilde (se nedenfor). Deretter kan vi forvandle dem til rapportfelt, opprette beregnede felt eller bruke aggregeringsformler.

I tillegg til dette er det interessant å sammenligne hvordan vi kan håndtere flere datasett da vi kanskje trenger flere av dem hvis dataene våre kommer fra forskjellige spørsmål eller til og med forskjellige datakilder:

  • BIRT tilbyr den enkleste løsningen da vi kan ha flere datasett i samme rapport
  • Med Jasper Rapporter og Pentaho, må vi lage en separat delrapport hver gang, noe som kan være ganske vanskelig

2.3. Diagrammer og visuelle elementer

Alle verktøyene gir enkle elementer som former og bilder, og også hver diagramsmak: linjer, områder, paier, radar, ringeosv. Alle støtter også kryssfaner.

Derimot, Jasper Rapporter gir den rikeste samlingen av visuelle elementer. Det legger til listen ovenfor kart, sparklines, pyramider, og Gantt-diagrammer.

2.4. Styling Rapporter

La oss nå sammenligne plasseringen og størrelsen på elementene på siden:

  • Alle verktøyene gir pikselposisjonering
  • BIRT og Pentaho gir også HTML-lignende posisjonering (tabell, blokk, inline)
  • Ingen av dem støtter CSS-lignende flexbox eller rutenett for å kontrollere elementets størrelse

Når vi må administrere flere rapporter, kan det være lurt å dele det samme visuelle temaet:

  • Jasper Rapporter gir temafiler med XML-CSS-syntaks
  • BIRT kan importere CSS-stilark til designsystemet
  • Med Pentaho, kan vi bare legge til CSS-stilark i sideoverskriften. Så det er vanskelig å blande dem med det interne designsystemet

3. Gjengivelsesrapporter

Nå som vi har sett hvordan vi skal utforme rapporter, la oss sammenligne hvordan vi kan gjengi dem programmatisk.

3.1. Installasjon

Først, la oss merke det alle verktøyene er designet for å enkelt bli innebygd i et Java-prosjekt.

For å komme i gang kan du ta en titt på våre dedikerte artikler om BIRT og Jasper Reports. For Pentaho er det en hjelpeside og gratis kodeeksempler.

Deretter vil vi for hvert av disse verktøyene koble rapportmotoren til applikasjonsdataene våre.

3.2. Datakilde

Det første spørsmålet vi bør stille er: hvordan kan vi koble rapportmotoren til prosjektdatakilden vår?

  • Jasper Rapporter: vi legger bare til det som en parameter for fillReport metode
  • BIRT løsningen for dette er litt mer kompleks: vi bør endre rapporten vår for å sette datakildeattributtene som parametere
  • Pentaho har en stor ulempe her: med mindre vi kjøper dem PDI kommersiell programvare, vi må bruke en JNDI-datakilde, som er vanskeligere å sette opp

Apropos datakilder, hvilke typer støttes?

  • Alle de tre verktøyene støtter de vanligste typene: JDBC, JNDI, POJOer, CSV, XML og MongoDB
  • REST API er et krav for moderne prosjekter, men ingen av dem støtter det naturlig
    • med BIRT, bør vi kode a Groovy manus
    • Jasper Rapporter krever et ekstra gratis plugin
    • med Pentaho, bør vi kode a Groovy manus eller anskaffe PDI kommersiell programvare
  • JSON-filer støttes naturlig av Jasper Rapporter og Pentaho, men BIRT vil kreve et eksternt Java-parserbibliotek
  • Vi finner den komplette sammenligningslisten i denne matrisen

3.3. Parametere og Runtime Customization

Når vi har koblet rapporten til datakilden vår, la oss gjengi data!

Det viktige nå er hvordan du kan hente sluttbrukerdataene våre. For å gjøre dette kan vi overføre parametere til gjengivelsesmetoden. Disse parameterne burde vært definert da vi utformet rapporten, ikke ved kjøretid. Men hva kan vi gjøre hvis for eksempel datasettet vårt er basert på forskjellige spørsmål avhengig av sluttbrukerkonteksten?

Med Pentaho og Jasper Rapporter, det er rett og slett ikke mulig å gjøre det, siden rapportfilen er binær og det ikke er noen Java SDK som kan endre dem. Ved sammenligning, BIRT rapportene er XML-filer. Videre kan vi bruke et Java API for å endre dem, så det er veldig enkelt å tilpasse alt på kjøretid.

3.4. Utdataformater og Javascript-klienter

Heldigvis støttes de fleste vanlige formater av alle verktøyene: HTML, PDF, Excel, CSV, ren tekst, og RTF. I dag kan vi også spørre hvordan vi kan integrere rapportresultatet direkte på websidene våre. Vi vil imidlertid ikke nevne den grove inkluderingen av en PDF-visualisering.

  • Den beste løsningen er å bruke Javascript klienter for å gjengi rapporter direkte til et HTML-element. Til BIRT, Javascript-klienten er Aktiver JSAPI og til Jasper Rapporter, burde vi bruke JRIO.js
  • Pentaho gir ikke annet enn iFrame-integrering. Denne løsningen fungerer, men kan ha alvorlige ulemper

3.5. Frittstående gjengivingsverktøy

I tillegg til å integrere rapporten vår på en webside, kan vi også være interessert i å ha en out-of-the-box rendering server. Hvert verktøy gir sin egen løsning:

  • BIRT Viewerer en lett webapplikasjon prøve å utføre BIRT rapporterer på forespørsel. Det er åpen kildekode, men inkluderer ikke funksjoner for rapportadministrasjon
  • til Pentaho og Jasper-rapport, det er bare kommersielle programvarepakker

4. Prosjektstatus og aktivitet

Først et ord om lisenser. BIRT er under EPL, Jasper Rapporter under LGPLv3, og Pentaho under LGPLv2.1. Dermed kan vi legge alle disse bibliotekene inn i våre egne produkter, selv om de er kommersielle.

Så kan vi spørre oss selv hvordan disse åpen kildekode-prosjektene opprettholdes, og om samfunnet fortsatt er aktivt:

  • Jasper Rapporter har et godt vedlikeholdt lager, med en stabil mediumaktivitet av redaktøren TIBCO Software
  • BIRT oppbevaringssted forblir vedlikeholdt, men det er aktiviteten er veldig lav siden 2015 da OpenText kjøpte redaktøren Actuate
  • På samme måte, Pentaho depotaktiviteten er veldig lav siden oppkjøpet av Hitachi-Vantara i 2015

Vi kan bekrefte dette ved hjelp av Stackoverflow-trender. Den laveste populariteten er for BIRT og Pentaho, men er moderat for Jasper Rapporter.

Alle tre Java-rapporteringsverktøy har blitt redusert i popularitet de siste 5 årene selv om de forblir stabile for nå. Vi kan forklare dette ved fremveksten av Cloud og Javascript-tilbudene.

5. Kommersielle Java-rapporteringsverktøy

I tillegg til åpen kildekode-løsninger, er det også noen kommersielle alternativer tilgjengelig som er verdt å nevne.

5.1. Fin rapport

Fin rapport er opprinnelig designet for å utføres som en frittstående server. Heldigvis kan vi inkludere det som en del av prosjektet vårt hvis vi vil bruke det. Vi må manuelt kopiere alle JARer og ressurser til vår KRIG, som beskrevet i prosedyren.

Etter å ha gjort dette, kan vi se Beslutningsplattform verktøy tilgjengelig som en URL i prosjektet vårt. Fra denne URL-en kan vi utføre rapporter direkte i den medfølgende nettvisningen, en iFrame, eller bruker Javascript-klienten. Vi kan imidlertid ikke generere rapporter programmatisk.

En annen stor begrensning er målet kjøretid. Versjon 10 støtter bare Java 8 og Tomcat 8.x.

5.2. Logi Report (tidligere JReport)

I likhet med Fine Report er Logi Report designet for å bli utført som en frittstående server, men vi kan integrere den som en del av vårt eksisterende WAR-prosjekt. Dermed vil vi møte samme begrensning som med Fin rapport: vi kan ikke generere rapporter programmatisk.

I motsetning til Fine Report. Imidlertid støtter Logi Report nesten alle servletcontainere og Java 8 til 13.

5.3. ReportMill Reporting

Endelig, ReportMill er verdt å nevne fordi vi kan legge det jevnt inn i alle Java-applikasjoner. Også, som BIRT, det er veldig fleksibelt: Vi kan tilpasse rapporter på kjøretid, ettersom de er vanlige XML-filer.

Imidlertid kan vi se med en gang at ReportMill har eldet seg, og har også et dårlig sett med funksjoner sammenlignet med de andre løsningene.

6. Konklusjon

I denne artikkelen gikk vi gjennom noen av de mest kjente Java-rapporteringsverktøyene og sammenlignet funksjonene deres.

Som en konklusjon kan vi velge et av disse Java-rapporteringsverktøyene avhengig av våre krav:

Vi velger BIRT:

  • For et enkelt bibliotek å erstatte en eksisterende hjemmelaget løsning
  • For dens største fleksibilitet og høye potensial for tilpasning

Vi velger Jasper Reports:

  • Hvis vi trenger et rapporteringsbibliotek som er kompatibelt med en fullverdig rapportstyringssystem
  • Hvis vi vil satse på beste langsiktige evolusjon og støtte

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