JasperReports: una libreria Open Source per la reportistica

Primo articolo su JasperReports, una libreria Open Source per la realizzazione di reportistica da un‘applicazione Java, che consente la produzione di diversi formati, tra cui HTML e PDF.

Introduzione

Questo mese inizia una serie di tre articoli dedicata alle API di JasperReports, una libreria Open Source (rilasciata con licenza LGPL) scritta interamente in Java che consente la generazione dinamica di report a partire da dati recuperati da fonti di varia natura (per esempio database) e la loro visualizzazione, stampa o salvataggio su file di tipo PDF, HTML, XLS, CSV o XML. JasperReports può essere utilizzata in tutti i tipi di applicazioni Java, comprese quelle Web. In questo primo articolo verranno fatte una panoramica sull‘architettura di JasperReports e una descrizione a grandi linee del processo di generazione di un report.

La reportistica

Spesso può capitare l‘esigenza di dover integrare delle funzionalità  di reportistica all‘interno di una applicazione Java. In questi casi JasperReports è un‘alternativa sicuramente valida non solo all‘ipotesi di realizzare ex novo il motore per la creazione di report professionali ma anche rispetto all‘adozione di software commerciali (quali Crystal Reports), molto potenti e stabili, ma che comportano per il nostro progetto dei costi aggiuntivi elevati, sia in termini economici (a causa delle licenze) che di tempo (interfacciamento non sempre agevole).
JasperReports prevede già  delle API per la realizzazione di tutte le funzionalità  tipiche di un software di reportistica:

  • formattazione di ogni elemento di un testo (font, allineamento, spaziatura, colore, etc.)
  • definizione di parti standard predefinite (header, footer, sommario, etc.)
  • gestione di raggruppamenti
  • valutazione di espressioni
  • campi calcolati
  • gestione di subreport
  • inserimento di immagini
  • stampa
  • salvataggio dell‘output su file di diverso formato

In figura 1 viene mostrato un esempio di report generato da applicazione Java tramite JasperReports.

Architettura di JasperReports

In figura 2 viene mostrato un diagramma dell‘architettura di JasperReports.

In fase di design, deve essere per prima cosa definito il layout (sotto forma di file XML, costruito secondo lo schema definito in jasperreport.dtd) di un report. A partire da tale layout, tramite JasperReports, andrà  prodotto un file con estensione .jasper. Quest‘ultimo è il semicompilato che verrà  utilizzato dall‘applicazione a runtime per la generazione del report vero e proprio, a partire da dati recuperati da un database. La figura 3 chiarisce ulteriormente questo concetto.

La versione più recente di JasperReports è la 1.1.1
Richiede il JDK 1.2.2 o versione superiore.
Il runtime e la compilazione necessitano delle seguenti liberie Java (tutte comunque incluse nell‘archivio ZIP scaricabile dal sito ufficiale (http://jasperreports.sourceforge.net/)):

  • SAX XML Parser
  • Jakarta Commons Digester Component
  • Jakarta Commons BeanUtil Component
  • Jakarta Commons Collections Component
  • Jakarta Commons Logging Component
  • JDBC 2.0
  • IText
  • Jakarta POI

I package che compongono la libreria sono i seguenti:

  • net.sf.jasperreports.ant
  • net.sf.jasperreports.engine
  • net.sf.jasperreports.engine.base
  • net.sf.jasperreports.engine.data
  • net.sf.jasperreports.engine.design
  • net.sf.jasperreports.engine.export
  • net.sf.jasperreports.engine.fill
  • net.sf.jasperreports.engine.print
  • net.sf.jasperreports.engine.util
  • net.sf.jasperreports.engine.xml
  • net.sf.jasperreports.view
  • net.sf.jasperreports.view.save

Il più importante fra questi è net.sf.jasperreports.engine, il quale contiene le classi direttamente richiamate dalle applicazioni che adottano JasperReports ed evidenziate in rosso in figura 1.

Conclusioni

La comprensione dell‘architettura di JasperReports descritta in questo articolo è necessaria per potersi cimentare nella integrazione di tale liberia in un‘applicazione Java. Nel prossimo articolo vedremo alcuni esempi pratici semplici, ma molto utili da un punto di vista didattico perchà© mettono in risalto le operazioni comuni a tutte i processi di generazione di report tramite JasperReports.

1Teodor Danciu"Documentazione ufficiale di JasperReports"http://jasperreports.sourceforge.net/2Wostmann & Associates"JasperReports and iReports"http://www.wainet.com/Presentations/JasperReports%20&%20iReports.ppt

Condividi

Pubblicato nel numero
104 febbraio 2006
Guglielmo Iozzia si è Laureato nel 1999 in Ingegneria Elettronica (indirizzo Biomedico) presso l‘Università di Bologna. Ha progettato e realizzato un software diagnostico per la predizione dell‘andamento della pressione intracranica in pazienti in terapia intensiva neurochirurgica. Frequenta il mondo Java dall‘inizio del 2000. Dopo numerose esperienze presso un‘azienda di Bologna…
Articoli nella stessa serie
Ti potrebbe interessare anche