更新時間:2021-09-29 09:13:14 來源:動力節點 瀏覽1079次
在Java開發工具當中,有一種是報告工具,當我們談論報表工具時,很多軟件都涵蓋了這個領域。但是,它們中的大多數是成熟的商業智能平臺或云服務。
但是,如果我們只想將一些報告功能作為庫添加到我們的應用程序中,會發生什么?我們將在這里回顧一些非常適合此目的的Java報表工具。
通過本節,我們將回顧如何直觀地設計報告和處理我們的數據。請注意,我們將在本部分中僅提及開源工具。
(1)可視化編輯器
所有這三個工具都包括一個具有報表預覽功能的 WYSIWIG 編輯器。
BIRT Report Designer和Jaspersoft Studio是構建在Eclipse RCP上的工具。對于我們大多數 Java 開發人員來說,這是一個很好的觀點,因為我們可能熟悉 Eclipse 環境。與那些不同的是,Pentaho 報表設計器在視覺上很差。
此外,還有一個關于Jaspersoft Studio 的有趣功能:我們可以直接在他們的Jasper Reports Server(報告管理系統)上發布我們的報告。
(2)數據集
與所有報表工具一樣,我們可以通過查詢數據源來檢索數據集(見下文)。然后,我們可以將它們轉換為報表字段、創建計算字段或使用聚合公式。
除此之外,比較我們如何管理多個數據集很有趣,因為如果我們的數據來自不同的查詢甚至不同的數據源,我們可能需要其中的幾個:
BIRT提供了最簡單的解決方案,因為我們可以在同一個報告中擁有多個數據集
使用Jasper Reports和Pentaho,我們每次都需要創建一個單獨的子報表,這可能非常棘手
(3)圖表和視覺元素
所有工具都提供簡單的元素,如形狀和圖像,以及各種圖表風格:線、區域、餅、雷達、環等。它們都支持交叉表。
但是,Jasper Reports提供了最豐富的視覺元素集合。它添加到上面的列表映射,迷你圖,金字塔,和甘特圖。
(4)造型報告
現在,讓我們比較一下頁面中元素的定位和大小:
所有工具都提供像素定位
BIRT和Pentaho還提供類似 HTML 的定位(表、塊、內聯)
它們都不支持類似 CSS 的 flexbox 或網格系統來控制元素大小
此外,當我們必須管理多個報表時,我們可能希望共享相同的視覺主題:
Jasper Reports提供帶有 XML-CSS 語法的主題文件
BIRT可以將 CSS 樣式表導入到設計系統中
使用Pentaho,我們只能在頁眉中添加 CSS 樣式表。所以很難將它們與內部設計系統混合
現在,我們已經了解了如何設計報告,讓我們比較一下如何以編程方式呈現它們。
(1)安裝
首先,讓我們注意到所有工具都被設計為可以輕松嵌入到 Java 項目中。
首先,您可以查看我們關于BIRT 和Jasper Reports 的專門文章。對于 Pentaho,有一個幫助頁面和免費的代碼示例。
接下來,對于這些工具中的每一個,我們將報告引擎連接到我們的應用程序數據。
(2)數據源
我們應該問的第一個問題是:我們如何將報表引擎連接到我們的項目數據源?
Jasper Reports:我們只需將其添加為fillReport方法的參數
BIRT解決方案有點復雜:我們應該修改我們的報告以將數據源屬性設置為參數
Pentaho在這里有一個很大的缺點:除非我們購買他們的PDI商業軟件,否則我們必須使用 JNDI 數據源,這更難設置
說到數據源,支持哪些類型?
所有三個工具都支持最常見的類型:JDBC、JNDI、POJOs、CSV、XML 和MongoDB
REST API是現代項目的必要條件,然而,它們都沒有原生支持它
使用BIRT,我們應該編寫一個Groovy 腳本
Jasper Reports需要一個額外的免費插件
使用Pentaho,我們應該編寫Groovy 腳本或獲取PDI商業軟件
Jasper Reports和Pentaho本機支持 JSON 文件,但BIRT將需要外部 Java 解析器庫
我們可以在這個矩陣中找到完整的比較列表
(3)參數和運行時自定義
由于我們已將報表連接到我們的數據源,讓我們呈現一些數據!
現在重要的是如何檢索我們的最終用戶數據。為此,我們可以將參數傳遞給渲染方法。這些參數應該在我們設計報告時定義,而不是在運行時定義。但是,例如,如果我們的數據集基于最終用戶上下文的不同查詢,我們該怎么辦?
使用Pentaho和Jasper Reports,這是不可能做到的,因為報告文件是二進制的,并且沒有 Java SDK 來修改它們。相比之下,BIRT報告是純 XML 文件。此外,我們可以使用 Java API 來修改它們,因此在運行時自定義所有內容非常容易。
(4)輸出格式和 Javascript 客戶端
值得慶幸的是,所有工具都支持大多數常見格式:HTML、PDF、Excel、CSV、純文本和RTF。如今,我們可能還會問,如何將報告結果直接集成到我們的網頁中。不過,我們不會提及粗略地包含 PDF 可視化工具。
最好的解決方案是使用Javascript客戶端將報告直接呈現到 HTML 元素中。對于BIRT,Javascript 客戶端是 Actuate JSAPI ,對于Jasper Reports,我們應該使用JRIO.js
Pentaho除了 iFrame 集成之外不提供任何東西。此解決方案有效,但可能存在嚴重缺陷
(5)獨立渲染工具
除了將我們的報告集成到網頁中之外,我們可能還對開箱即用的渲染服務器感興趣。每個工具都提供了自己的解決方案:
BIRT Viewer 是一個輕量級的 Web 應用程序示例,用于按需執行BIRT報告。它是開源的,但不包括報告管理功能
對于Pentaho和Jasper Report,只有商業軟件包
首先,談談許可證。BIRT在EPL下,Jasper Reports在LGPLv3下,Pentaho在LGPLv2.1下。因此,我們可以將所有這些庫嵌入到我們自己的產品中,即使它們是商業產品。
然后,我們可以問問自己,這些開源項目是如何維護的,社區是否仍然活躍:
Jasper Reports有一個維護良好的存儲庫,其編輯器 TIBCO Software 具有穩定的中等活動
BIRT 存儲庫仍在維護,但自 2015 年 OpenText 收購其編輯器 Actuate 以來,其活動非常低
同樣,自 2015 年 Hitachi-Vantara 收購以來,Pentaho存儲庫 活動非常低
我們可以使用 Stackoverflow 趨勢來確認這一點。BIRT和Pentaho 的受歡迎程度最低,但Jasper Reports 的受歡迎程度中等。
盡管目前保持穩定,但在過去 5 年中,所有三種Java 報告工具的受歡迎程度都有所下降。我們可以通過云和 Javascript 產品的出現來解釋這一點。
除了開源解決方案,還有一些值得一提的商業選項。
(1)精細報告
Fine Report最初設計為作為獨立服務器執行。幸運的是,如果我們想使用它,我們可以將它作為我們項目的一部分。我們必須手動將所有 JAR 和資源復制到我們的 WAR 中,如他們的過程中所述。
執行此操作后,我們可以在我們的項目中看到作為 URL 提供的決策平臺工具。通過此 URL,我們可以直接在提供的 Web 視圖、iFrame或使用其 Javascript 客戶端中執行報告。但是,我們無法以編程方式生成報告。
另一個巨大的限制是目標運行時。版本 10僅支持 Java 8 和 Tomcat 8.x。
(2)Logi 報告(以前的 JReport)
與 Fine Report 一樣,Logi Report 被設計為作為獨立服務器執行,但我們可以將其集成為現有 WAR 項目的一部分。因此,我們將面臨與Fine Report相同的限制:我們無法以編程方式生成報告。
與 Fine Report 不同。然而,Logi Report 支持幾乎所有的 servlet 容器和 Java 8 到 13。
(3)ReportMill 報告
最后, ReportMill 值得一提,因為我們可以將它順利地嵌入到每個 Java 應用程序中。此外,與 BIRT 一樣,它非常靈活:我們可以在運行時自定義報告,因為它們是純 XML 文件。
但是,我們可以立即看到 ReportMill 已經老化,并且與其他解決方案相比,它的功能也很差。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習