# JasperReports

JasperReports ist ein Open-Source-Java-Berichtswerkzeug, entwickelt von Jaspersoft, mit dem man aus Java-Programmen Berichte als PDF, HTML, Microsoft Word und Microsoft Excel, TXT, RTF, ODT, CSV und XML exportieren, auf dem Bildschirm anzeigen oder drucken kann.

## Funktionalität

Mit JasperReports lassen sich in Java-Programmen Berichte mit Daten aus ein oder mehreren Datenquellen erstellen. Diese Quellen schließen die folgenden ein: Datenbanken über JDBC oder Hibernate, Enterprise JavaBeans über EJBQL, JavaBeans, XML- und CSV-Dateien. Weitere Datenquellen können dem JasperReports Framework über sogenannte JRQueryExecuter hinzugefügt werden. So existiert z. B. eine Erweiterung, die Oracle PL/SQL Stored Procedures als Datenquelle hinzufügt.
JasperReports’ Berichte können die Daten in textueller tabellarischer Form darstellen, aber auch Diagramme daraus generieren. Diese mittels JFreeChart generierten Diagramme unterstützen diverse Diagrammlayouts wie z. B. Kreis-, Balken-, Säulen- oder Blasendiagramme.
Mit sogenannten Scriptlets, die in Java oder Groovy ausgeführt sein können, kann die Berichtsausführung um eigene Funktionen erweitert werden. Zusätzlich können diese Scriptlets auf Ereignisse aus der JasperEngine reagieren. Dabei kann auf Seiten-, Gruppen- oder Zeilenwechsel reagiert werden.

## Geschichte

Die Entwicklung von JasperReports wurde durch Teodor Danciu im Juni 2001 gestartet, das Sourceforge-Projekt wurde im September desselben Jahres gegründet und die erste Version (0.1.5) am 3. November 2001 veröffentlicht, die Version 1.0 am 21. Juli 2005.
Das Unternehmen Jaspersoft entstand aus dem Unternehmen Panscopic, das von Al Campa (CEO) und Raj Bhargava (VP) im Jahre 2001 gegründet wurde. 2004 erwarb Panscopic alle Rechte an JasperReports und nannte sich in Jaspersoft um. Jaspersoft vertreibt kommerzielle Software rund um JasperReports und vertreibt auch JasperReports an Kunden, welche es mit einem Nicht-Open-Source-Produkt verbinden wollen.
Am 28. April 2014 veröffentlichte TIBCO, dass sie Jaspersoft für ungefähr 185 Millionen US-Dollar übernommen haben.

## JRXML

Die Berichte werden in einem JRXML genannten XML-Format gespeichert und müssen vor der Ausführung in .jasper-Dateien kompiliert werden. Der Bericht selber enthält keine Datenquellen, diese werden der Report-Engine zur Laufzeit übergeben. Lediglich die Abfragemethode, z. B. SQL-Statements, wird mit abgespeichert. Zur Laufzeit wird dann die Abfragemethode auf die übergebene Datenquelle angewandt, das Ergebnis gerendert und in die gewünschte Ansicht gebracht.

## Werkzeuge

Es gibt verschiedene Programme, die den Umgang mit den Berichten erleichtern:

### DynamicReports

    Quelloffene Java-API-Reporting-Library

### iReport Designer

    Von Jaspersoft unter der GPL veröffentlichte Software zum Bearbeiten von Berichten mit grafischer Oberfläche. Das Programm ist auch als Eclipse-Plugin und als Plugin für NetBeans vorhanden. Wird seit 2013 nicht mehr weiterentwickelt und seit 2015 nicht mehr gewartet. Jaspersoft Studio ist das Nachfolgeprodukt.

### JasperReports Server

    Von Jaspersoft entwickelte Serversoftware unter der GPL, die Berichte, Datenquellen und andere Dateien verwaltet

### JasperTags

    Eine JSP Tag Library für den einfachen Einsatz von JasperReports in Webapplikationen

### Jaspersoft Studio

    Von Jaspersoft entwickeltes Open-Source-Eclipse-Plugin zum Bearbeiten von Berichten mittels WYSIWYG-Editor. Nachfolger des iReport-Designers.

### Jaspersoft ETL

    Open-Source-Data-Warehouse von Jaspersoft für Analyse und Reportingzwecke.
Weiters gibt es diverse Eclipse-Plugins zum Erstellen von Berichten direkt aus der Entwicklungsumgebung:
* SWTJasperViewer
* JasperAssistant: proprietäres, auf SWTJasperViewer aufsetzendes Eclipse-Plugin von Infologic, mit dem man per grafischer Oberfläche die Berichte bearbeiten kann
* Plazma Report Designer
* JasperWave Report Designer – Eclipse-basierter Editor für JasperReports

## JasperReports Refactorings

Der Sourcecode von JasperReports war Inhalt einer Reihe wissenschaftlicher Studien zu Codequalität und Refactoring:
* Rajesh Vasa, Jean-Guy Schneider: Evolution of Cyclomatic Complexity in Object Oriented Software. In: 7th workshop on the quantitative approaches in object-oriented software engineering (QAOOSE'2003). 2003 (it.swin.edu.au (Memento des Originals vom 7. Dezember 2004 im Internet Archive)).
* Deepak Advani, Youssef Hassoun, Steve Counsell: Heurac: A heuristic-based tool for extracting refactoring data from open-source software versions. (PDF; 154 kB) Januar 2005, archiviert vom Original; abgerufen am 11. Januar 2007.
* Emerson Murphy-Hill: Improving Refactoring with Alternate Program Views. (PDF) 2005, abgerufen am 11. Januar 2007.
* R. Vasa: Detecting structural changes in object oriented software systems. In: Proceedings of the 2005 International Symposium on Empirical Software Engineering (ISESE 2005). 18. November 2005, ISBN 0-7803-9507-7, S. 463, doi:10.1109/ISESE.2005.1541855.
* Deepak Advani, Youssef Hassoun, Steve Counsell: Extracting refactoring trends from open-source software and a possible solution to the 'related refactoring' conundrum. In: Proceedings of the 2006 ACM symposium on Applied computing. 2006, ISBN 1-59593-108-2 (New York, USA: ACM Press), S. 463, doi:10.1145/1141277.1141685.
* S. Counsell, Y. Hassoun, G. Loizou and R. Najjar: Common Refactorings, a Dependency Graph and some Code Smells: An Empirical Study of Java OSS. In: Proceedings of the 2006 ACM/IEEE International symposium on empirical software engineering. 2006, ISBN 1-59593-218-6 (New York, USA: ACM Press), S. 463, doi:10.1145/1159733.1159777.