Java alati za izvještavanje: usporedba

1. Pregled

Kad razgovaramo o Alati za izvještavanje, puno softvera pokriva ovo područje. Međutim, većina njih su punopravni Platforme za poslovnu inteligenciju ili Usluge u oblaku.

Ali, što se događa ako samo želimo dodati neke značajke izvješćivanja u našu aplikaciju kao knjižnicu? Ovdje ćemo pregledati neke Java alati za izvještavanje dobro prikladan za ovu svrhu.

Uglavnom ćemo se usredotočiti na ove alate otvorenog koda:

  • BIRT
  • Jasper izvještava
  • Pentaho

Uz to ćemo ukratko analizirati sljedeće komercijalne alate:

  • FineReport
  • Izvještaj Logi (ranije JReport)
  • Izvještajni mlin

2. Izrada izvještaja

Kroz ovaj odjeljak pregledat ćemo kako vizualno možemo dizajnirati izvješća i igrati se s našim podacima. Napomena: u ovom ćemo se dijelu referirati samo na alate otvorenog koda.

2.1. Vizualni urednici

Sva tri alata uključuju WYSIWIG editor s mogućnostima pregleda izvješća.

Dizajner izvještaja BIRT i Jaspersoft Studio su alati izgrađeni na Eclipse RCP-u. Ovo je dobra stvar za većinu nas Java programera, jer nam je možda poznato okruženje Eclipse. Za razliku od onih, Pentahov dizajner izvještaja je vizualno loše ostario.

Također, postoji i dodatna zanimljiva značajka o Jaspersoft Studio: naša izvješća možemo objaviti izravno na njihovim Jasper izvještava poslužitelj (sustav upravljanja izvješćima).

2.2. Skupovi podataka

Kao i kod svih alata za izvještavanje, i mi možemo doći do skupova podataka upitom a izvor podataka (Pogledaj ispod). Zatim ih možemo transformirati u polja izvješća, stvoriti izračunata polja ili koristiti agregacijske formule.

Osim ovoga, zanimljivo je usporediti kako možemo upravljati s više skupova podataka jer će nam možda trebati nekoliko njih ako naši podaci dolaze iz različitih upita ili čak različitih izvori podataka:

  • BIRT nudi najjednostavnije rješenje jer u istom izvješću možemo imati više skupova podataka
  • S Jasper izvještava i Pentaho, svaki put moramo stvoriti zaseban podizvještaj, što može biti prilično nezgodno

2.3. Karte i vizualni elementi

Svi alati pružaju jednostavne elemente poput oblika i slika, kao i svaki okus grafikona: linije, područja, pita, radar, prstenitd. Svi oni također podržavaju unakrsne kartice.

Međutim, Jasper izvještava pruža najbogatiju kolekciju vizualnih elemenata. Dodaje na gornji popis Karte, varnice, piramide, i Ganttovi dijagrami.

2.4. Izvješća o oblikovanju

Sad, usporedimo položaj i veličinu elemenata na stranici:

  • Svi alati omogućuju pozicioniranje piksela
  • BIRT i Pentaho također omogućuje pozicioniranje nalik HTML-u (tablica, blok, umetnuto)
  • Nitko od njih ne podržava CSB-ov flexbox ili grid sustav za kontrolu veličine elemenata

Također, kada moramo upravljati s više izvješća, možda ćemo htjeti podijeliti istu vizualnu temu:

  • Jasper izvještava pruža datoteke tema s XML-CSS sintaksom
  • BIRT može uvesti CSS tabele stilova u sustav dizajna
  • S Pentaho, u zaglavlje stranice možemo dodati samo CSS tablice stilova. Stoga ih je teško pomiješati s internim sustavom dizajna

3. Prikazivanje izvješća

Sad, kad smo vidjeli kako dizajnirati izvješća, usporedimo kako ih možemo programski prikazati.

3.1. Montaža

Prvo, zabilježimo to svi su alati dizajnirani za lako ugrađivanje u Java projekt.

Za početak možete pogledati naše posebne članke o BIRT i Jasper Reports. Za Pentaho postoji stranica pomoći i besplatni uzorci koda.

Zatim ćemo za svaki od ovih alata povezati mehanizam izvješća s podacima naše aplikacije.

3.2. Izvor podataka

Prvo pitanje koje bismo trebali postaviti jest: kako možemo povezati mehanizam za izvještavanje s našim izvorom podataka o projektu?

  • Jasper izvještava: jednostavno ga dodajemo kao parametar fillReport metoda
  • BIRT rješenje za ovo je malo složenije: trebali bismo izmijeniti naše izvješće kako bismo atribute izvora podataka postavili kao parametre
  • Pentaho ima veliki nedostatak ovdje: osim ako ih ne kupimo PDI komercijalni softver, moramo koristiti JNDI izvor podataka, što je teže postaviti

Kad smo kod izvora podataka, koje su vrste podržane?

  • Sva tri alata podržavaju najčešće vrste: JDBC, JNDI, POJO, CSV, XML i MongoDB
  • REST API uvjet je za moderne projekte, međutim, niti jedan od njih to ne podržava izvorno
    • s BIRT, trebali bismo kodirati a Groovy scenarij
    • Jasper izvještava zahtijeva dodatni besplatni dodatak
    • s Pentaho, trebali bismo kodirati a Groovy scenarij ili steći PDI komercijalni softver
  • JSON datoteke izvorno podržavaju Jasper izvještava i Pentaho, ali BIRT trebat će vanjsku knjižnicu Java parsera
  • Kompletni popis za usporedbu možemo pronaći u ovoj matrici

3.3. Parametri i runtime prilagodba

Kako smo naše izvješće povezali s našim izvorom podataka, prikažimo neke podatke!

Sada je najvažnije kako doći do podataka krajnjeg korisnika. Da bismo to učinili, možemo proslijediti parametre metodi prikazivanja. Ti su parametri trebali biti definirani kad smo dizajnirali izvješće, a ne tijekom izvođenja. Ali što možemo učiniti ako se, na primjer, naš skup podataka temelji na različitim upitima, ovisno o kontekstu krajnjeg korisnika?

S Pentaho i Jasper izvještava, to jednostavno nije moguće učiniti, jer je datoteka izvješća binarna i ne postoji Java SDK koji bi ih mogao izmijeniti. Za usporedbu, BIRT izvješća su obične XML datoteke. Štoviše, za njihovu izmjenu možemo koristiti Java API vrlo je lako prilagoditi sve za vrijeme izvođenja.

3.4. Izlazni formati i Javascript klijenti

Srećom, svi alati podržavaju većinu uobičajenih formata: HTML, PDF, Excel, CSV, obični tekst, i RTF. Danas se također možemo pitati kako rezultat izvješća možemo integrirati izravno u naše web stranice. Ipak nećemo spominjati grubo uključivanje PDF vizualizatora.

  • Najbolje rješenje je koristiti Javascript klijentima da izvješća prikazuju izravno u HTML element. Za BIRT, Javascript klijent je Aktivirajte JSAPI i za Jasper izvještava, trebali bismo koristiti JRIO.js
  • Pentaho ne pruža ništa osim integracije iFramea. Ovo rješenje djeluje, ali može imati ozbiljne nedostatke

3.5. Samostalni alati za prikazivanje

Osim integriranja našeg izvješća u web stranicu, mogli bismo biti zainteresirani i za izrađeni poslužitelj za prikazivanje. Svaki alat nudi svoje rješenje:

  • BIRT Viewerje lagana web aplikacija uzorak za izvršenje BIRT izvješća na zahtjev. Otvoreni je izvor, ali ne uključuje značajke upravljanja izvješćima
  • za Pentaho i Jasperov izvještaj, postoje samo komercijalni softverski paketi

4. Status i aktivnost projekata

Prvo, riječ o licencama. BIRT je ispod EPL, Jasper izvještava pod, ispod LGPLv3, i Pentaho pod, ispod LGPLv2.1. Dakle, sve te knjižnice možemo ugraditi u vlastite proizvode, čak i ako su komercijalni.

Zatim se možemo zapitati kako se održavaju ovi projekti otvorenog koda i je li zajednica još uvijek aktivna:

  • Jasper izvještava ima dobro održavano spremište, sa stabilnim medijskim aktivnostima urednika TIBCO Software
  • BIRT spremište ostaje održavan, ali njegov aktivnost je vrlo niska od 2015. kada je OpenText stekao svog urednika Actuate
  • Slično tome, Pentaho aktivnost spremišta je vrlo niska od akvizicije Hitachi-Vantare 2015. godine

To možemo potvrditi pomoću Stackoverflow trendova. Najniža popularnost je za BIRT i Pentaho, ali je umjeren za Jasper izvještava.

Svo troje Alati za izvještavanje Java smanjili su popularnost u posljednjih 5 godina iako za sada ostaju stabilni. To možemo objasniti pojavom ponuda za Cloud i Javascript.

5. Komercijalni Java alati za izvještavanje

Osim rješenja otvorenog koda, postoje i neke komercijalne opcije koje vrijedi spomenuti.

5.1. Fino izvješće

Fino izvješće je u početku dizajniran za izvršavanje kao samostalni poslužitelj. Srećom, u mogućnosti smo ga uključiti u svoj projekt ako ga želimo koristiti. Moramo ručno kopirati sve JAR-ove i resurse u naš WAR, kako je opisano u njihovom postupku.

Nakon što to učinimo, možemo vidjeti Platforma za donošenje odluka alat dostupan kao URL u našem projektu. S ovog URL-a možemo izvršiti izvješća izravno u navedenom web prikazu, iFrameili koristeći njihov Javascript klijent. Međutim, izvješća ne možemo generirati programski.

Još jedno veliko ograničenje je ciljno vrijeme izvođenja. Verzija 10 podržava samo Java 8 i Tomcat 8.x.

5.2. Izvještaj Logi (ranije JReport)

Kao i Fine Report, Logi Report je dizajniran da se izvršava kao samostalni poslužitelj, ali možemo ga integrirati kao dio našeg postojećeg WAR projekta. Dakle, suočit ćemo se s istim ograničenjima kao i kod Fino izvješće: ne možemo programski generirati izvješća.

Za razliku od Fine Report. međutim, Logi Report podržava gotovo sve spremnike servleta i Javu 8 do 13.

5.3. Izvještavanje ReportMill

Konačno, ReportMill je vrijedan spomena jer možemo ga glatko ugraditi u svaku Java aplikaciju. Također, poput BIRT-a, vrlo je fleksibilan: izvješća možemo prilagoditi tijekom izvođenja jer su to obične XML datoteke.

Međutim, odmah možemo vidjeti da je ReportMill ostario i također ima loš niz značajki u usporedbi s ostalim rješenjima.

6. Zaključak

U ovom smo članku pregledali neke od najpoznatijih alata za izvještavanje Java i usporedili njihove značajke.

Kao zaključak možemo odabrati jedan od ovih Java alata za izvještavanje ovisno o našim zahtjevima:

Mi ćemo odabrati BIRT:

  • Za jednostavnu knjižnicu zamijenite postojeće domaće rješenje
  • Za svoje najveća fleksibilnost i visok potencijal prilagodbe

Mi ćemo odabrati Jasper Reports:

  • Ako nam treba biblioteka izvještaja kompatibilna s punopravni sustav upravljanja izvješćima
  • Ako se želimo kladiti na najbolja dugoročna evolucija i podrška