更新时间:2021-09-29 09:13:14 来源:极悦 浏览900次
在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天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习