来自 操作系统 2020-01-31 08:13 的文章
当前位置: 澳门威尼斯人平台 > 操作系统 > 正文

主流JAVA报表工具的比较

    从部署、展示、设计等方面,全面比较Java报表工具,如FineReport,润乾,快逸,Style Report,Jasper等,以及声称支持Java的Crystal,数巨等。
    Java报表工具,首先可以分成两大类:纯Java报表工具,和"支持"Java的报表工具.
    纯Java报表工具
    纯Java的报表工具,主要的有:
    开源的产品,如JasperReport(),以及准开源的产品(只卖设计器,服务器免费的)。这些产品的功能上要弱很多。开源的更没有支持,虽然有很多讨论区,但这和可靠的厂商的商业支持是没法比的。准开源虽然支持稍好一点,但有限的收入对于其长期支撑、产品提升都是不利的,对用户则是一个长期的风险。
     FineReport ()功能完善的web报表产品,支持中国式报表设计:多源分片,扩展后数据的格间运算,行列对称等等。并且对于报表设计人员来说,FineReport有一个优势就是可以仅通过鼠标操作就设计出复杂的报表,这增强了工具的易学和易用性。没有加密狗。
    润乾 ()润钱是一个功能非常强大的Web报表产品,支持中国式报表。但是由于其报表设计方式完全依赖手写表达式,对于没有技术基础的用户来说,学习难度比较大。其最初是定位于高端用户,06年在普及版的基础上推出了快逸报表,去掉了最核心的多数据源线性报表功能,保留的功能只相当开源的jasperreport的所具备的功能,主打低端路线。虽然快意同样也是一个纯JAVA产品,但是由于其限制非线性报表功能,不能设计中国式复杂报表,所以在面对复杂报表的时候,就无能为力了,个人觉得市场宣传的噱头远远大于实际功能的作用。二者都有加密狗。
    "支持"Java的报表工具:
    我 们所说的"支持"Java的报表工具.其实就是非Java的报表工具,但是可以在Java程序中调用.这样的产品很多,总的讲一大类是采用独立报表服务器 的,如Bo/Crystal Report(),Brio(),Cognos()等;另一大类是在前端有控件的,如数巨报表()等。
    独立报表服务器的问题在于:
    独立的报表服务器,直接限制了报表的性能瓶颈
    无法共享web服务器的集群能力
    无法共享web服务器的连接池管理能力
    无法统一部署,实施人员既要部署自己的web应用,还需要部署报表服务器
    独立报表服务器往往有一套自己的用户角色管理机制,与用户的应用衔接起来问题多多
    前端控件方式的问题在于:
    用户部署起来非常麻烦,每台机器都要安装控件。(为解决这个问题,有些厂商把原来控件所做的报表计算工作移到服务器上做,但这只能在Windows下运行,因为它并不是纯Java的)
    控件会对大报表产生性能问题,因为其报表生成与计算工作是在控件中实现的。  
    应用系统无法灵活地通过API对报表进行控制。
    产品升级 -客户端都要重新下载新的控件,增加工作量,比较麻烦。
    这 一比较,并不是说其他方式就不可取,但显然在Java环境下的报表应用,纯Java的报表产品有先天的优势。

在用Web报表工具查询数据时,经常会遇到查询条件不定的情况,例如参数过滤列是动态变化的:有时想用A列进行过滤,有时想用B列进行过滤。在FineReport报表中,可以将整个查询条件作为参数传入sql中,查询出对应的数据,定义形式如:_select FROM [TableName] ${Condition}*,即把整个where语句作为动态的参数。

  1. SparkJava

FineReport报表和水晶报表的比较

FineReport报表软件针对复杂格式的报表数据及Web报表的展现,通过多源分片、不规则分组、双向扩展来轻松拖拽做复杂格式的报表,制作报表从此摆脱了复杂的SQL和表达式,不需要编程,大大提高了报表制作的效率。

相对于水晶报表(Crystal Report),FineReport报表无论是在报表设计,数据展现,还是表单,应用集成等方面,都具有明显的优势。

 

1. 新建报表

这是针对Java开发者的一个新的轻量级以及强大的Web应用框架。Spark拥有简单和直接的方法,你可以使用Spark框架,通过做一些繁琐的XML配置来编码应用。Spark助你更轻松的开发Java Web应用。

报表设计

在报表设计方面,FineReport报表工具的优势主要体现在以下几个方面:

  • #### 多数据源

    FineReport报表设计天然支持多数据源(集),同一张报表的数据可同时来自多个数据表,多个不同的数据库,或者多个不同的用户自定义数据视图,然后在报表中可直接相互运算形成最终的报表。

    并且连接数据源的方式也多种多样,支持JDBC,JNDI数据源,如Oracle,DB2,SQLServer,MySQL等主流的数据库,自定义的程序数据源,文本数据源,Hibernate数据源,Remedy等等,同时数据源具有无限的扩展性,可以支持WebService,SOA等标准的数据。

    水晶报表(Crystal Report)在理论上只支持单数据集,对多集的支持依赖于数据库的运算能力(叉乘与联合等或写存储过程),多库一般难以支持。另外一种处理方式,就是将多数据源先变相整理成单一数据源,然后再进行其它操作,并不是真正意义上的多数据源。

  • #### 分组的调整,不完全分组

    分组是报表数据当中,最常见的方式。FineReport报表工具的分组,是建立在单元格的基础之上,因此删除分组,更改分组字段等操作,就只需要对单元格进行操作,与报表内其它的数据无关。另外,在很多情况下,数据并非枚举式的完全分组,而是一些固定行列,或者按段分组等形式,FineReport报表提供了用户自定义分组,只需要添加一些条件,即可达到不规则分组的目的。

    水晶报表(Crystal Report),所有的数据都被划分在条带状的模型当中,删除分组时会将相关的分组汇总单元一并删除,调整分组字段只能删掉重建,整个操作比较繁琐,且会导致重复工作。而不规则分组,在Crystal Report当中,则仅仅只是修改组名,无法修改其它跟随数据的计算。

  • #### 数据扩展和交叉表

    FineReport报表工具的数据扩展,是双向的,也就是行列对称,横纵方向能力一致,可以方便地制作交叉报表(多层),可同行式表一样制作复杂表头。

    水晶报表(Crystal Report)制作交叉报表的方式,是采用专门的交叉表模型,其表头是按照向导自动生成的,缺乏灵活性。

  • #### 报表分片

    复杂报表当中,报表分为多片的现象非常常见,即整个报表是一个大的规则的报表,但是实际上可以分为多个不规则的小区域,各个区域之间看似没有联系,但是数据之间实际可以相互关联。FineReport由于支持多数据源,以及数据的行列对成扩展,因此支持报表的各片独立重复或者相互运算,并且允许固定和变动分片的混合。

    水晶报表(Crystal Report)的单表模型不能支持分片。对于分片的报表,一种处理方法是事先编程准备数据,另一种则是靠子报表拼接来完成。处理相当繁琐,并且这两种处理方法也并非每次都能够达到要求,设计出需要的报表格式。

  • #### 跨行组运算

    报表中常常需要有跨行组的运算,如比上期、比去年同期等。FineReport报表的单元格层次坐标概念可以精确地引用任何一个扩展之后的单元格,然后通用地写出表达式进行这些跨行组运算。

    水晶报表(Crystal Report)只能简单地支持某些固定的跨行运算,如累积值、比上期等,更复杂的跨行组计算只能事先编程准备数据。

 

2. 定义数据集

2. jClarity

报表展现和输出

  • #### 类Excel的界面风格

    FineReport报表工具的界面风格,是完全类似于Excel的,格线对齐的编辑方式,极大的便利了报表的设计和输出,并且单元格内属性比较自由灵活,可以得到格式任意复杂的报表。

    水晶报表(Crystal Report)均采用控件拖拽式绘制报表,这种方案完全没有体现表格的规律性,当表头复杂的时候,对齐非常繁琐。而且与分辨率相关,屏幕上对齐的表格,在网页上和打印时又无法对齐。

  • #### 输入输出

    FineReport报表支持单个或者批量导入Excel文件,这样可以由业务人员,事先画好表样,提高制作报表的效率,并且,批量导入,更加的减轻重复的工作。生成的报表文件可输出为HTML、不失真的PDF、Excel、Word、CSV、SVG和文本文件等多种样式。另外,还可生成内置的模板文件。

    水晶报表(Crystal Report)无法支持导入Excel文件,最多只能从Excel读取数据。其生成的HTML一般只能支持IE;导出EXCEL时经常只有数据而丧失格式,个别工具完成得比较仔细,但也严重依赖于表格绘制时对齐的程度,生成的文本也只包括数据而丧失格式,无法支持字符终端的报表打印需求。

  • #### 套打

    FineReport报表采用底图描绘,绝对定位的方式完成套打表样的绘制,用户可将要套打的票据扫描进来作为背景图,用报表设计器进行数据的位置摆放,可以精确定位数据的位置。

    水晶报表(Crystal Report)只能采用精确度量的方案,量好套打票据的尺寸来设置表格控件的大小,操作繁琐,效率很低。

  • #### 分页打印,分栏以及其它打印控制

    FineReport提供了全部的报表打印控制:按照分组或者其它任意的方式来进行强制分页,补足空行。

    分页时标题可重复,不仅是上表头,表格较宽的报表,其左表头也可设置分页时重复显示。

    数据可进行自由分栏,较长的报表,可以按照行分栏,显示成多列;列数较多的报表,可以使用列分栏来多行显示到同一个页面当中。

    水晶报表(Crystal Report),一般只能支持上表头重复,不可以进行强制分页,补足空行,分栏等操作。

 

澳门威尼斯人注册网站,    新建数据库查询ds1,输入SQL:_select FROM STSCORE ${Condition}*

jClarity是两个产品的组合,其中illuminate用于性能监控,census则用于收集日志和分析数据,框架是轻量级的,并且非常的紧凑。

表单

表单的回填是水晶报表(Crystal Report)完全不能支持的功能。FineReport支持基于纯HTML的表单回填,支持各种主流的浏览器。

  • #### 编辑风格

    表单提供普通文本编辑框、复选框、下拉列表框、下拉日历、文件上传等。

  • #### 自动计算

    表单可支持类似EXCEL的自动计算功能,程序根据用户的设置在前端生成JavaScript表达式完成自动计算。自动计算还可跨表,多sheet之间的相互运算。

  • #### 数据一致性校验

    支持对回填的数据进行合法性检查。

  • #### 数据的扩展

    允许报表单元格与数据库字段间任意对应,并有自动扩展的能力。支持任意格式的表单回填数据。

  • #### 直接回填到数据库

    用户填写的数据,都直接存储到数据库当中,无需中间环节。

  • #### 多级汇总填报

    表单的报表同时还是个统计表,单元格数据可以有不同的来源和去向,这样可以先从下级机构汇总出数据再加以补充修改后填写到上级数据库中。

    FineReport报表,其制表效率十倍于以国外产品为代表的传统报表工具。

对比点

FineReport

CrystalReport

应用集成

后台的环境支持

纯JAVA,全支持

个别产品只支持Windows

前台的环境支持

纯HTML,全支持

一般仅支持IE

J2EE的应用服务器管理

嵌入应用,可充分利用应用服务器各项能力

独立服务器,应用服务器能力不可利用

J2EE的WEB部署

与应用统一部署

单独安装部署,操作繁琐

J2EE的应用接口

丰富齐全,结合紧密

通过网络协议,力度不足,统计图常采用古老的CGI方式

Java Application集成

支持

非纯JAVA的不支持

.NET的应用集成

支持,独立服务

支持

页面的集成

完全随意嵌入

独立门户,很困难

用户权限控制

与应用程序一致

独立机制很繁琐

IDE集成能力

有限支持

不支持

并发能力

较强,4万单元格表在512M内存可并发50个以上

基础程序对内存要求很高,并发数较少

数据设计

多数据源(集)

直接

间接支持

完全分组(多层)

支持

支持,较繁琐

完全交叉(多层)

支持,无须专门处理

支持,用专门的交叉模型

不完全分组/固定行列

支持

编程准备数据

上下分片

支持,上下格式可不一致,固定变动混合

格式一致的可编程准备数据,否则必须拼子表完成

左右分片

支持,固定变动混合,直接运算性能高

固定列的可编程准备数据,采用DB叉乘性能很差

跨行组运算

支持,随意通用

固定的简单跨行运算,跨组不支持

独立格运算

支持,随意通用

固定几种运算,来自DB的要专门处理

主从报表

无须子表概念即可完成

须用子表,数据无法沟通

子表

多层任意,格线可对齐可缩放,横纵向均可自动摆位

一般两层,横向表不可自动摆位

参数与宏

均支持

仅支持参数

报表展现

基本方案

EXCEL网格式,方便快捷

控件式,对齐繁琐

导入EXCEL

支持

不支持

套打绘制

底图描绘

精确度量

报表输出格式

标准HTML,PDF,word完全不失真的EXCEL,带格式文本

PDF,特殊HTML,丧失格式的EXCEL,无格式文本

统计图输出格式

GIF,JPG,PNG

GIF,JPG

打印分页分栏

横纵向均可,强制分页

仅支持纵向,且不可分栏

其它打印控制

一纸多页,补空行,缩放

缩放

表单

编辑风格

文字编辑、下拉选择等

不支持

自动计算

支持

合法性检查

支持

数据库对应

随意自动,行/列/交叉均可

多级汇总填报

支持

 

 

3. Clover

部署和应用集成

  • #### WEB部署

    FineReport报表工具的服务程序以JAR包形式出现,可与应用程序统一打成包一起部署在应用服务器上,安装非常轻松。

    水晶报表(Crystal Report)的独立服务器方案需要单独安装,报表文件也须单独部署,无法和应用程序一起更新。

  • #### 环境的支持

    FineReport报表采用纯JAVA开发,无论报表设计器还是服务器均支持所有可部署JDK的操作系统、有JDBC接口的数据库,特别对于UNIX/LINUX的支持与Windows是完全一样的。而非JAVA的报表工具在这方面要困难得多。

  • #### 丰富的API接口

    FineReport报表工具向应用程序员提供了结构清晰,丰富的JAVA API调用,可以对报表进行扩展和深度控制。

    水晶报表(Crystal Report)采用独立服务器方案,应用接口通过网络协议完成,接口数量稀少、控制力度弱,而且严重影响性能。统计图等HTML外置资源还常常采用原始的CGI方式,会在文件系统中留下难以管理的临时文件。

  • #### 页面的集成

    FineReport报表生成的HTML可在应用页面(JSP)中随意嵌入摆放,对从浏览器端完全看不出集成了第三方产品。

    水晶报表(Crystal Report)均有自己独立的门户机制,很难将生成的HTML随意嵌入到页面中,常常必须带出其产品本身的报表管理界面,难以做到无缝嵌入。

 

Clover是一款伟大的用于代码覆盖的工具,该工具有助于编写对应用测试有用的代码。你可以在IDE或持续集成系统中运行Clover。工具优化于提升你的测试速度。

澳门威尼斯人注册网站 1

4. jProfiler

澳门威尼斯人注册网站 2

jProfiler有直观的用户界面,可以帮助你解决性能瓶颈以及理解问题。你可以很容易的确定内存泄漏并使用jProfiler修复线程问题。

 

5. Visualvm

 

Visualvm是一款免费的、集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力,对Java应用程序做性能分析和调优。

3. 模板设计

6. Elasticsearch

本文由澳门威尼斯人平台发布于操作系统,转载请注明出处:主流JAVA报表工具的比较

关键词: