{"id":19019,"date":"2018-01-24T11:44:57","date_gmt":"2018-01-24T10:44:57","guid":{"rendered":"https:\/\/pitss.org\/de\/?p=19019"},"modified":"2018-04-25T15:49:06","modified_gmt":"2018-04-25T13:49:06","slug":"jasper-reports-review","status":"publish","type":"post","link":"https:\/\/pitss.org\/de\/jasper-reports-review\/","title":{"rendered":"JasperReports Review: St\u00e4rken, Schw\u00e4chen und Features des Reporting-Tools"},"content":{"rendered":"<p>[et_pb_section bb_built=&#8220;1&#8243; fullwidth=&#8220;on&#8220; _builder_version=&#8220;3.0.74&#8243; background_image=&#8220;https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2017\/08\/blog-2-header-v3-min.jpg&#8220; next_background_color=&#8220;#ffffff&#8220;][et_pb_fullwidth_header title=&#8220;PITSS Tech Blog&#8220; subhead=&#8220;News zu Java, PL\/SQL, Entwicklung &amp; Technologiewechsel&#8220; background_layout=&#8220;dark&#8220; text_orientation=&#8220;center&#8220; background_overlay_color=&#8220;rgba(0,0,0,0.53)&#8220; _builder_version=&#8220;3.0.74&#8243; header_fullscreen=&#8220;off&#8220; header_scroll_down=&#8220;off&#8220; image_orientation=&#8220;center&#8220; content_orientation=&#8220;center&#8220; custom_button_one=&#8220;off&#8220; button_one_letter_spacing=&#8220;0&#8243; button_one_icon_placement=&#8220;right&#8220; button_one_letter_spacing_hover=&#8220;0&#8243; custom_button_two=&#8220;off&#8220; button_two_letter_spacing=&#8220;0&#8243; button_two_icon_placement=&#8220;right&#8220; button_two_letter_spacing_hover=&#8220;0&#8243; title_font_size=&#8220;36px&#8220; subhead_font_size=&#8220;22px&#8220; max_width_tablet=&#8220;50px&#8220; \/][\/et_pb_section][et_pb_section bb_built=&#8220;1&#8243; specialty=&#8220;on&#8220; _builder_version=&#8220;3.0.69&#8243; background_position_1=&#8220;top_left&#8220; background_repeat_1=&#8220;no-repeat&#8220; background_position_2=&#8220;top_left&#8220; background_repeat_2=&#8220;no-repeat&#8220; prev_background_color=&#8220;#000000&#8243; next_background_color=&#8220;#000000&#8243;][et_pb_column type=&#8220;3_4&#8243; specialty_columns=&#8220;3&#8243;][et_pb_row_inner admin_label=&#8220;Row&#8220; _builder_version=&#8220;3.0.69&#8243;][et_pb_column_inner type=&#8220;4_4&#8243; saved_specialty_column_type=&#8220;3_4&#8243;][et_pb_text _builder_version=&#8220;3.1.1&#8243; module_alignment=&#8220;left&#8220;]<\/p>\n<h1>JasperReports Review: St\u00e4rken, Schw\u00e4chen und Features des Reporting-Tools<\/h1>\n<p>Jasper Reports darf wohl als das popul\u00e4rste Reporting-Werkzeug in der Open-Source-Gemeinde angesehen werden. Seit mehr als zehn Jahren bestimmt das Produkt den Markt mit effizienter Dokumenterstellung, funktionalem Reporting und Business-Intelligence-L\u00f6sungen.<\/p>\n<p>Nach der Abk\u00fcndigung von Oracle Reports kommt aktuell Bewegung in den Markt und viele sind gefordert, sich nach Alternativen umzuschauen. Mit Jasper Reports finden sie mehr als nur eine gleichwertige L\u00f6sung. Was den Reiz dieser L\u00f6sung besonders ausmacht, ist die M\u00f6glichkeit, das Reporting f\u00fcr sich und seine Gesch\u00e4ftsprozesse neu zu entdecken.<\/p>\n<p>In dem folgenden Review m\u00f6chten wir den ersten Eindruck von Jasper Reports wiedergeben und St\u00e4rken und Schw\u00e4chen des Tools aufzeigen.<\/p>\n<h2>Inhaltsverzeichnis<\/h2>\n<h5><a href=\"#ErsterEindruck\"><span style=\"color: #006bb3;\"><strong>1. Der erste Eindruck z\u00e4hlt<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Repository\"><span style=\"color: #006bb3;\"><strong>2. Verwendung eines Repository<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Wizards\"><span style=\"color: #006bb3;\"><strong>3. Breite Unterst\u00fctzung von Wizards<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Layout\"><span style=\"color: #006bb3;\"><strong>4. Layout-Konzept<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Styles\"><span style=\"color: #006bb3;\"><strong>5. Einheitlichkeit durch Styles<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Subreports\"><span style=\"color: #006bb3;\"><strong>6. Subreports f\u00fcr steigende Komplexit\u00e4t<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Programmiersprachen\"><span style=\"color: #006bb3;\"><strong>7. Programmieren mit Java, Groovy oder JavaScript<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Deployment\"><span style=\"color: #006bb3;\"><strong>8. Deployment-Alternativen<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#St\u00e4rken\"><span style=\"color: #006bb3;\"><strong>9. St\u00e4rken<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Schw\u00e4chen\"><span style=\"color: #006bb3;\"><strong>10. Schw\u00e4chen<\/strong><\/span><\/a><\/h5>\n<h5><a href=\"#Fazit\"><span style=\"color: #006bb3;\"><strong>11. Fazit<\/strong><\/span><\/a><\/h5>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-19034 size-full\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-start.png\" alt=\"Jaspersoft Studio Community Edition\" width=\"800\" height=\"381\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-start.png 800w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-start-300x143.png 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-start-768x366.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2><a id=\"ErsterEindruck\"><\/a>Der erste Eindruck z\u00e4hlt<\/h2>\n<p>Die kostenlose <strong>Community Edition<\/strong> von Jasper Reports steht jedem Interessierten zum <a href=\"https:\/\/community.jaspersoft.com\/download\">Herunterladen<\/a> zur Verf\u00fcgung. Das Bundle besteht aus:<\/p>\n<ul>\n<li><strong>JasperReports Library<\/strong>: Einer Sammlung von Jar-Files, die das Herzst\u00fcck des Tools darstellen<\/li>\n<li><strong>JasperReports Server<\/strong>: Eine Webapplikation zur Administration der Reports-Engine<\/li>\n<li><strong>Jaspersoft Studio<\/strong>: Einer auf Eclipse basierenden IDE zur Erstellung der Reports. Diese IDE l\u00f6ste mit der Version 5.5, ver\u00f6ffentlicht in 2014, den zuvor genutzten iReport Designer ab.<\/li>\n<\/ul>\n<p>F\u00fcr einen ersten Eindruck reicht der Start in das Jaspersoft Studio, da die Entwicklungsumgebung alle Komponenten enth\u00e4lt, um Berichte erstellen und auch testen zu k\u00f6nnen.<\/p>\n<p>Java-Entwickler werden sich in der IDE <strong>sofort wiederfinden<\/strong>, da sie komplett auf den Eclipse-Varianten ab Version 4.4 und folgenden aufbaut. Das Jaspersoft Studio kann entweder als <strong>Standalone-Software<\/strong> oder als <strong>Eclipse-Plugin<\/strong>, falls bereits andere Entwicklungsprojekte mit Eclipse betreut werden, genutzt werden. Durch die N\u00e4he zu Eclipse ist sichergestellt, dass Integrationen in Versionsverwaltungen, wie z. B. Subversion oder GIT direkt enthalten sind. Ebenfalls sind die Konzepte von Project Explorer, Outlines, Toolbars, Properties, verschiedenen Views, Logs und Elementen an die \u00fcblichen Muster bei einer IDE angelehnt, so dass die Lernkurve sich auf die JasperReports-spezifischen Konzepte beschr\u00e4nkt.<\/p>\n<h2><a id=\"Repository\"><\/a>Verwendung eines Repository<\/h2>\n<p>Eines der grundlegenden Konzepte ist die Verwendung des Repository innerhalb von Jasper Reports. In der Entwicklungsumgebung wird das Repository genutzt, um die verschiedenen <strong>Datenquellen<\/strong> f\u00fcr die Berichte zu registrieren. Die Auswahl der verf\u00fcgbaren Technologien f\u00fcr die Datenquellen l\u00e4sst dabei keine W\u00fcnsche \u00fcbrig. Bereits mit der Installation sind 18 verschiedene Data-Adapter, wie z. B. JDBC-Connection, EJBs, JSON aber auch CSV und XML verf\u00fcgbar. Sollte ein Wunsch offen bleiben, kann das mitgelieferte Interface JRDataSource mit Java an jede beliebige Datenquelle angepasst werden.<\/p>\n<div id=\"attachment_19033\" style=\"width: 1510px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-19033\" class=\"wp-image-19033 size-full\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-reporsitory.png\" alt=\"Jasper Reports Repository\" width=\"1500\" height=\"750\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-reporsitory.png 1500w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-reporsitory-300x150.png 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-reporsitory-768x384.png 768w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-reporsitory-1024x512.png 1024w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-reporsitory-1080x540.png 1080w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><p id=\"caption-attachment-19033\" class=\"wp-caption-text\">Die Verwendung eines Repository ist grundlegend f\u00fcr JasperReports<\/p><\/div>\n<p>Das Konzept des Repository ist auch f\u00fcr den Server bindend, d. h. in der Produktivumgebung wird gleichfalls ein Repository genutzt, um <strong>alle<\/strong> <strong>Berichte und damit verbundene Dateien<\/strong> wie in einem Filesystem zu speichern. Bei der Installation des Servers wird standardm\u00e4\u00dfig eine Postgres-Datenbank mit f\u00fcr dieses Repository angelegt. Es k\u00f6nnen aber auch andere, bereits vorhandene Datenbanken daf\u00fcr genutzt werden.<\/p>\n<p>In der Entwicklungsumgebung liegen die Berichte im lokalen Filesystem und werden \u00fcber die IDE im Projekt Explorer verwaltet. Bei gr\u00f6\u00dferen Projekten bietet es sich an, hier von Anfang an in sinnvollen Verzeichnisstrukturen und Namensr\u00e4umen zu strukturieren. Ein einzelner Bericht beinhaltet dann in einer XML-Struktur (Dateiendung .jrxml) alle Informationen, von den benutzten Queries des Datenmodells \u00fcber die Angabe von Parametern und Variablen, die Verwendung von Scriplets f\u00fcr die Programmierung bis hin zur Darstellung des Layouts.<\/p>\n<h2><a id=\"Wizards\"><\/a>Breite Unterst\u00fctzung von Wizards<\/h2>\n<p>F\u00fcr die Erstellung eines Berichtes bietet das Jaspersoft Studio eine Vielzahl von Wizards an, die einen ersten Einstieg immens vereinfachen. Nach der Auswahl eines geeigneten Templates und der Wahl des passenden Data-Adapters, kann mit wenigen Klicks die Grundlage f\u00fcr einen neuen Bericht erstellt werden.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-19031 size-full\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-new-report-wizard.png\" alt=\"Unterst\u00fctzung durch Wizards\" width=\"800\" height=\"519\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-new-report-wizard.png 800w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-new-report-wizard-300x195.png 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-new-report-wizard-768x498.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Das Datenmodell wird innerhalb des Berichts \u00fcber einen eigenen \u201cDataset and Query\u201d-Designer modelliert. Je nach Vorliebe des Entwicklers kann das Select-Statement handgeschrieben eingetragen oder durch eine Vielzahl von <strong>Hilfsmitteln<\/strong> zusammengestellt werden. Wertvoll ist dabei, dass sowohl <strong>Berichts-<\/strong> als auch <strong>Systemparameter<\/strong> \u00fcber eine Palette angeboten werden. Je nach Wahl des Data-Adapters werden f\u00fcr den Wizard in der passenden \u201cSprache\u201d (JSON, SQL, XPath etc.) die sinnvollen Hilfsmittel zur Erstellung eines Datasets angeboten. Der integrierte Data-Previewer stellt sicher, dass am Ende auch die richtigen Daten f\u00fcr den Bericht selektiert werden.<\/p>\n<p>M\u00f6gliche Gruppierungen und Sortierungen der Daten werden im Anschluss durch die Struktur des Berichtes mit der Angabe von Feldern oder Variablen f\u00fcr die Gruppierung und Sortierung angegeben. Dabei kann nat\u00fcrlich auf Felder der Datenquelle, aber auch auf Parameter und selbst erstellte Funktionen, auf die wir sp\u00e4ter noch eingehen werden, zur\u00fcckgegriffen werden.<\/p>\n<h2><a id=\"Layout\"><\/a>Layout-Konzept<\/h2>\n<p>Das Layout eines JasperReports ist horizontal in die Bereiche \u201aTitel\u2018, \u201aKopfzeile\u2018, \u201aSpalten\u00fcberschriften\u2018 und \u201aSpaltenunterschriften\u2018 (jeweils bei einem mehrspaltigen Bericht) sowie Fu\u00dfzeile und Zusammenfassung gegliedert. Sollte der Bericht Gruppierungen beinhalten, steht f\u00fcr jede Gruppe noch einen Kopf- und Fu\u00dfbereich zur Verf\u00fcgung.<\/p>\n<p>Mit dieser Gliederung lassen sich in der Regel alle Anforderungen eines <strong>modernen Berichtslayouts<\/strong> erf\u00fcllen. Im Jaspersoft Studio erm\u00f6glicht der Berichtsdesigner sowohl ein <strong>Design-View<\/strong>, in dem Elemente innerhalb der einzelnen, sogenannten B\u00e4ndern, positioniert werden, wie ein <strong>Source-View<\/strong>, in dem direkt das XML-Dokument bearbeitet werden kann. Es bleibt den Vorlieben des Entwicklers \u00fcberlassen, ob er seine \u00c4nderungen im Design-View, in der XML-Datei oder der Vielzahl der Assistenten durchf\u00fchren m\u00f6chte. Die IDE h\u00e4lt alle Ansichten synchron und speichert die Anpassungen im JRXML-File.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-19028 size-full\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-wizard.png\" alt=\"JasperReports Layout\" width=\"800\" height=\"631\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-wizard.png 800w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-wizard-300x237.png 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-wizard-768x606.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Analog zum Daten-Designer unterst\u00fctzt die IDE auch im Layouten mit einer einfachen und performanten <strong>Voransicht<\/strong>, damit der Entwickler direkt ein Feedback zu seinen durchgef\u00fchrten \u00c4nderungen bekommt.<\/p>\n<p>Aus der verf\u00fcgbaren Palette k\u00f6nnen weitere Berichtselemente recht einfach per Drag and Drop in die passenden Bereiche (B\u00e4nder) des Reports gezogen werden. Neben grafischen Elementen stehen dabei auch bereits <strong>vorkonfigurierte Objekte<\/strong>, wie z. B. Seitennummerierungen, Druckdatum, Prozentberechnungen etc. zur Verf\u00fcgung.<\/p>\n<p>Jedes Objekt kann anschlie\u00dfend \u00fcber eine Vielzahl von individuellen Eigenschaften weiter angepasst werden.<\/p>\n<h2><a id=\"Styles\"><\/a>Einheitlichkeit durch Styles<\/h2>\n<p>F\u00fcr eine einheitliche Gestaltung der Reports bietet Jasper die durchg\u00e4ngige Verwendung von Styles an. Styles k\u00f6nnen mit dem Verfahren von CSS verglichen werden und fassen alle darstellungsrelevanten Attribute eines Objektes, wie z. B. Farbe, Font, Strichst\u00e4rken, Abst\u00e4nde etc. zusammen. Diese k\u00f6nnen in einem Bericht definiert und an alle Elemente vergeben werden. F\u00fcr ein <strong>unternehmensweites Design<\/strong> k\u00f6nnen Styles auch zentral erstellt und referenziert werden.<\/p>\n<p>Sp\u00e4testens bei dem Wunsch von datengetriebenen Formatierungen der Elemente ist die Verwendung der Styles notwendig, da Jasper Reports bedingte Formatierungen ausschlie\u00dflich \u00fcber Templates erlaubt. Das hat gegen\u00fcber anderen Reporting-Werkzeugen den Vorteil, dass die Formatierung hier nicht im Quellcode des Triggers verschwindet, sondern <strong>wartbar und zentral sichtbar<\/strong> bleibt.<\/p>\n<p>Damit auch ganze Berichte \u00fcbergreifend einen einheitlichen Eindruck hinterlassen, k\u00f6nnen Logos, struktureller Aufbau, wiederkehrende Elemente und die Styles in <strong>Berichtstemplates<\/strong> zusammengefasst werden. Damit wird die umfangreiche Erstellung neuer Berichte deutlich beschleunigt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-19029 size-full\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-chart-wizard.png\" alt=\"Einheitlichkeit durch Styles\" width=\"800\" height=\"532\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-chart-wizard.png 800w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-chart-wizard-300x200.png 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-chart-wizard-768x511.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Soll ein Bericht \u00fcber Diagramme Daten verdichten und ansprechender darstellen, findet der Entwickler im Jaspersoft Studio mit dem <strong>Chart Wizard<\/strong> die M\u00f6glichkeit, aus \u00fcber 20 verschiedenen, weiter konfigurierbaren Diagrammtypen die passende Darstellungsform f\u00fcr seinen Use Case auszuw\u00e4hlen. Der Wizard hilft dabei, alle notwendigen Daten f\u00fcr die Datenreihen, Beschriftungen, Achsen etc. auszuw\u00e4hlen. Damit k\u00f6nnen in der Regel die wichtigsten Anforderungen an eine Datenvisualisierung erf\u00fcllt werden. Weitergehende Anspr\u00fcche in Richtung von komplexen Business-Intelligence-L\u00f6sungen sind dann mit den kostenpflichtigen Varianten von Jasper (siehe dazu sp\u00e4ter mehr) m\u00f6glich.<\/p>\n<h2><a id=\"Subreports\"><\/a>Subreports f\u00fcr steigende Komplexit\u00e4t<\/h2>\n<p>Sollen in einem Bericht Daten aus unterschiedlichen Datenquellen oder mehreren Datasets (z. B. voneinander unabh\u00e4ngige Select-Statements) zusammengefasst werden, bietet Jasper Reports dazu das Verfahren von Subreports an.<\/p>\n<p>Dazu werden die einzelnen Bestandteile zun\u00e4chst in jeweils eigenen Reports, die in der Regel einfacher sind, d. h. ohne Kopf- und Fu\u00dfzeilen, ohne Titel und Zusammenfassung, erstellt. Diese Subreports k\u00f6nnen so <strong>modular designet<\/strong> werden, dass sie f\u00fcr mehrere Berichte genutzt werden k\u00f6nnen. Bei der Integration k\u00f6nnen aus dem Hauptreport <strong>eigene Parameter<\/strong> an den Subreport \u00fcbergeben werden, sowie Ergebnisse, die in dem Subreport ermittelt werden, an <strong>eigene Variablen<\/strong> aus dem Hauptreport zur\u00fcckgef\u00fchrt werden.<\/p>\n<p>Gerade bei der Aufgabenstellung, in einem Bericht Daten aus unterschiedlichen Datenquellen zusammenzuf\u00fchren, sind Subreports die pr\u00e4ferierte Wahl.<\/p>\n<p>Durch die N\u00e4he zu Java ist es nicht verwunderlich, dass auch die <strong>Mehrsprachigkeit<\/strong> von Jasper Reports nach dem gleichen Verfahren (i18N) umgesetzt wird. Die \u00dcbersetzung basiert auf <strong>Property-Bundlen<\/strong>, die zu einem Textschl\u00fcssel in den geforderten Sprachen den jeweiligen Text liefern. Daf\u00fcr ist es notwendig, dass kein statischer Text mehr im Report verbleibt, sondern durch Felder ersetzt wird, die dann \u00fcber eine sehr einfache Variablenreferenz die Internationalisierung sicherstellen.<\/p>\n<p><a href=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-19068\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen.jpg\" alt=\"JasperReports Programmiersprachen\" width=\"1163\" height=\"644\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen.jpg 1163w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen-300x166.jpg 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen-768x425.jpg 768w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen-1024x567.jpg 1024w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-programmiersprachen-1080x598.jpg 1080w\" sizes=\"auto, (max-width: 1163px) 100vw, 1163px\" \/><\/a><\/p>\n<h2><a id=\"Programmiersprachen\"><\/a>Programmieren mit Java, Groovy oder JavaScript<\/h2>\n<p>Generell k\u00f6nnen im Layout auch Felder platziert werden, die nicht direkt an das Datenmodell gebunden sind. Diese werden dann \u00fcber Variablen, Parameter, Ausdr\u00fccke oder eigene Funktionen bef\u00fcllt. Der Wizard f\u00fcr das Erstellen der Ausdr\u00fccke bietet eine vollst\u00e4ndige Liste aller verf\u00fcgbaren Objekte inkl. vorhandenen Built-in-Funktionen und der Syntax der verwendeten Methoden an.<\/p>\n<p>In der Regel ist die Programmiersprache f\u00fcr diese Ausdr\u00fccke Java, allerdings kann am Report auch konfiguriert werden, dass Groovy oder JavaScript verwendet werden soll. In diesen F\u00e4llen passt sich der Wizard entsprechend der verwendeten Syntax an.<\/p>\n<p>Die hierarchische Reihenfolge der Ausdr\u00fccke im Outline des Berichtes bestimmt auch die Reihenfolge der Berechnung dieser Ausdr\u00fccke, was gerade bei abh\u00e4ngigen Berechnungen zu beachten ist. Dar\u00fcber hinaus kann jeder Berechnung der Ausf\u00fchrungszeitpunkt (einmal am Anfang des Berichtes, nach jedem Seitenwechsel, nach jedem Band etc.) mitgegeben werden.<\/p>\n<p>Reichen die Standard-Funktionen von Java, JavaScript oder Groovy nicht aus, und sind eigene Methoden f\u00fcr das Ermitteln der Ausdr\u00fccke oder Variablen notwendig, k\u00f6nnen in sogenannten <strong>Scriptlets<\/strong> eigene Implementierungen in Java erfolgen.<\/p>\n<p>Scriptlets fungieren als Interface zwischen dem Report und der Jasper Reports-Engine und basieren auf einer der beiden gegebenen Java-Klassen JRAbstractScriptlet oder JRDefaultScriptlet. Die Klassen bieten die M\u00f6glichkeit, Eventtrigger zu nutzen, wie z. B. den beforeReportInit()-Trigger f\u00fcr das Initialisieren von Tabellen, bevor der Bericht gestartet wird. In dieser Java-Klasse kann aber auch jede beliebige Methode implementiert werden, die dann im Anschluss, nach der Registrierung des Scriptlets im Report zur Verf\u00fcgung steht. Die so erstellten Scriptlets m\u00fcssen beim Deployment als eigene JAR-Files dem <strong>JasperReports-Server<\/strong> zur Verf\u00fcgung gestellt werden.<\/p>\n<h2><a id=\"Deployment\"><\/a>Deployment-Alternativen<\/h2>\n<p>Das Deployment von Berichten in das Repository des Jasper Reports-Servers kann grunds\u00e4tzlich auf drei verschiedenen Wegen erfolgen. Zum einen kann der Server im Jasperstudio ebenfalls eingebunden werden, so dass die Berichte <strong>direkt aus der Entwicklungsumgebung<\/strong> bereitgestellt werden k\u00f6nnen. Das bietet sich f\u00fcr einen Testserver an, auf dem der Entwickler dedizierten Zugriff besitzt.<\/p>\n<p>F\u00fcr eine Bereitstellung der Sourcen auf einem <strong>Produktionsserver<\/strong> kann die Weboberfl\u00e4che, die f\u00fcr die Administration des Jasper-Servers vorgesehen ist, genutzt werden. Sollen gleichzeitig mehrere Server mit dem \u201cPatch\u201d der neuen Reports versorgt werden, kann ein Deployment auch mit einer daf\u00fcr bereitgestellt <strong>Java API<\/strong> erfolgen. In allen F\u00e4llen ist nicht nur die Berichtsdatei, sondern auch die Ordnerstruktur, Datenquellen, Bilder, Grafiken und ggf. die erstellten Java-Klassen auf den Server zu kopieren.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-19032 size-full\" src=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-editions.png\" alt=\"Jasper Deployment Alternativen\" width=\"800\" height=\"394\" srcset=\"https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-editions.png 800w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-editions-300x148.png 300w, https:\/\/pitss.org\/de\/wp-content\/uploads\/sites\/9\/2018\/01\/jasper-reports-editions-768x378.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Neben der Community Edition bietet Jasper Reports auch verschiedene <strong>kommerzielle Varianten<\/strong> des Tools an. Eine anschauliche \u00dcbersicht finden Sie auf der <a href=\"https:\/\/www.jaspersoft.com\/de\/editions-de\">Webseite<\/a> des Anbieters.<\/p>\n<p>Neben der Auspr\u00e4gung des Supports entf\u00e4llt bei der Community Edition alles, was in Richtung Business-Intelligence-Funktionalit\u00e4ten des Werkzeuges geht, d. h. das Speichern von \u00c4nderungen an interaktiven Berichten, Datenvisualisierungen \u00fcber JavaScript (Visualize.js), webbasierter Berichtsdesigner etc.<\/p>\n<p>F\u00fcr die Aufgaben des <strong>klassischen Reporting<\/strong> ist die Community Edition allerdings bestens ger\u00fcstet.<\/p>\n<h2><a id=\"St\u00e4rken\"><\/a>St\u00e4rken (<span style=\"color: #008000;\"><strong>+<\/strong><\/span>)<\/h2>\n<p>Durch die N\u00e4he des Jaspersoft Studio zu <strong>Eclipse<\/strong> f\u00fchlt sich jeder Java-Entwickler sofort wohl bei Jasper Reports und die Lernkurve ist sehr schnell genommen, zumal das Konzept sehr intuitiv ist.<\/p>\n<p>Berichte k\u00f6nnen mit der Vielzahl der <strong>Assistenten<\/strong> schnell und einfach erstellt und direkt im Jaspersoft Studio getestet werden, was die Zeit f\u00fcr das Debuggen enorm reduziert.<\/p>\n<p>Die Verwendung von <strong>Templates<\/strong> in der Berichtserstellung erlaubt gerade bei der Erstellung vieler neuer Berichte ein einheitliches Look and Feel und spart zus\u00e4tzlich wertvolle Arbeitsschritte.<\/p>\n<p>Zur Laufzeit besticht der Server gerade bei hohem Druckaufkommen mit sehr langen Berichten durch seine <strong>Performance<\/strong>.<br \/>\n<a id=\"Schw\u00e4chen\"><\/a><\/p>\n<h2>Schw\u00e4chen (<span style=\"color: #ff0000;\"><strong>&#8211;<\/strong><\/span>)<\/h2>\n<p>Verwunderlich mag erscheinen, dass es <strong>keine Stelle<\/strong> im Reports-Server gibt, an der Druckserver, Drucker oder andere Printing-Services konfiguriert werden k\u00f6nnen. Es ist schlichtweg nicht vorgesehen, vom Server aus direkt zu drucken. Hier muss sich der Entwickler \u00fcber den <strong>Umweg<\/strong> der PDF-Datei und eigenen Scripts behelfen.<\/p>\n<p>Das Konzept, eine Datenquelle direkt mit einem Bericht zu verbinden, f\u00fchrt zum einen dazu, dass umfangreiche Berichte nur noch durch Subreports zu l\u00f6sen sind, was die <strong>Komplexit\u00e4t<\/strong> deutlich erh\u00f6ht. Auf der anderen Seite erschwert es die Aufgabe, zwischen Datensets und Layout zu modularisieren, wenn z. B. in einem ERP-System kundenspezifische Alternativen unterst\u00fctzt werden sollen.<\/p>\n<h2><a id=\"Fazit\"><\/a>Fazit<\/h2>\n<p>Die M\u00f6glichkeit, Jasper Reports auch \u00fcber Webservices und URL-Calls zu integrieren, macht das Tool auch au\u00dferhalb einer reinen Java-Anwendungsentwicklung interessant. Pixel-Perfect-Printing erlaubt auch bei klassischen Aufgaben der Dokumentenerstellung, wie Labels, Barcodes und Formulare, eine sichere Verwendung. Das Tool ist eindeutig f\u00fcr die Software-Entwickler ausgerichtet, die, wenn es der erste Schritt in die Java-Welt sein sollte, die Lernkurve nicht untersch\u00e4tzen d\u00fcrfen.<\/p>\n<p>[\/et_pb_text][\/et_pb_column_inner][\/et_pb_row_inner][\/et_pb_column][et_pb_column type=&#8220;1_4&#8243;][et_pb_search _builder_version=&#8220;3.0.74&#8243; hide_button=&#8220;off&#8220; exclude_pages=&#8220;on&#8220; exclude_posts=&#8220;off&#8220; include_categories=&#8220;118,189,147,199,19,173,175,176,5,112,180,18,150,141,153,142,200,144,190,80,185,177,137,159,96,161,99,113,191,192,201,25,162,202,203,82,97,105,106,151,107,108,194,193,156,186,154,121,100,3,69,148,195,85,131,170,115,86,160,87,145,117,196,114,138,2,133,83,164,165,98,143,139,109,157,166,110,158,111,102,167,155,168,197,163,84,101,4,171,204,140,116,178,174,136,187,179,103,1,198,172,152,169,188,91,104,92,149&#8243; background_layout=&#8220;light&#8220; button_color=&#8220;#006bb3&#8243; button_text_color=&#8220;#ffffff&#8220; placeholder=&#8220;Artikel suchen&#8220; module_alignment=&#8220;left&#8220; \/][et_pb_sidebar area=&#8220;et_pb_widget_area_1&#8243; _builder_version=&#8220;3.0.74&#8243; orientation=&#8220;right&#8220; background_layout=&#8220;light&#8220; \/][et_pb_button _builder_version=&#8220;3.0.74&#8243; button_text=&#8220;\u2191 Zur\u00fcck zur \u00dcbersicht&#8220; button_url=&#8220;https:\/\/pitss.org\/de\/techblog&#8220; url_new_window=&#8220;off&#8220; button_alignment=&#8220;center&#8220; background_layout=&#8220;light&#8220; custom_button=&#8220;on&#8220; button_text_color=&#8220;#9b9b9b&#8220; button_border_color=&#8220;#d2d2d2&#8243; button_letter_spacing=&#8220;0&#8243; button_icon_placement=&#8220;right&#8220; button_letter_spacing_hover=&#8220;0&#8243; button_text_size=&#8220;16&#8243; \/][\/et_pb_column][\/et_pb_section][et_pb_section bb_built=&#8220;1&#8243; fullwidth=&#8220;off&#8220; specialty=&#8220;off&#8220; prev_background_color=&#8220;#000000&#8243;][et_pb_row][et_pb_column type=&#8220;4_4&#8243;][et_pb_comments _builder_version=&#8220;3.0.73&#8243; show_avatar=&#8220;on&#8220; show_reply=&#8220;on&#8220; show_count=&#8220;on&#8220; background_layout=&#8220;light&#8220; border_style=&#8220;solid&#8220; custom_button=&#8220;off&#8220; button_letter_spacing=&#8220;0&#8243; button_icon_placement=&#8220;right&#8220; button_letter_spacing_hover=&#8220;0&#8243; border_radii=&#8220;on||||&#8220; \/][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JasperReports Review: St\u00e4rken, Schw\u00e4chen und Features des Reporting-Tools Jasper Reports darf wohl als das popul\u00e4rste Reporting-Werkzeug in der Open-Source-Gemeinde angesehen werden. Seit mehr als zehn Jahren bestimmt das Produkt den Markt mit effizienter Dokumenterstellung, funktionalem Reporting und Business-Intelligence-L\u00f6sungen. Nach der Abk\u00fcndigung von Oracle Reports kommt aktuell Bewegung in den Markt und viele sind gefordert, sich nach Alternativen umzuschauen. Mit Jasper Reports finden [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":19065,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[3,81],"tags":[208,211,242],"class_list":["post-19019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-home-page-featured","category-tech-blog","tag-jasperreports","tag-reporting","tag-tibco"],"_links":{"self":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts\/19019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/comments?post=19019"}],"version-history":[{"count":15,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts\/19019\/revisions"}],"predecessor-version":[{"id":22641,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/posts\/19019\/revisions\/22641"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/media\/19065"}],"wp:attachment":[{"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/media?parent=19019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/categories?post=19019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pitss.org\/de\/wp-json\/wp\/v2\/tags?post=19019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}