龙源期刊网 http://www.qikan.com.cn
JFreeChart在转子动平衡计算系统图表开发中的应用与实现
作者:何冬辉 叶振起 赵奕州 来源:《软件导刊》2017年第10期
摘要:传统的Web图表开发在不同终端、不同平台上实现时,为满足用户全方位、多角度的体验而采用不同的图形组件,这无疑增加了开发量与维护量。JFreeChart是Java平台上一个开源图表绘制类库,动态图表在不同终端和平台生成时都基于相同的绘图组件,其提供了基于C/S与B/S架构下生成各种图片格式的图表,具有种类丰富、功能完善的数据图形表现力与渲染力。为使转子动平衡计算结果显示更加清晰、直观,同时增强该Web APP页面的功能与显示效果,结合JFreeChart开源图形包的特点、工作原理及开发流程,基于Vaadin开发框架,设计并实现了转子动平衡计算数据的动态图形显示。实例应用表明,JFreeChart在数据图表实现时,不仅显著提高了开发效率,也兼顾了不同终端的用户体验。 关键词:JFreeChart;图表;Vaadin;用户体验 DOIDOI:10.11907/rjdk.171651
中图分类号:TP319文献标识码:A文章编号:16727800(2017)010016204 0引言
传统的转子动平衡计算都是简单以数据来表现,缺少直观生动的表现力,而其计算结果的显示、分析及指导动平衡块安装所面临的首要任务就是将计算结果可视化。传统的Web图表绘制都是采用胖客户端的形式[1],如Applet,这种形式通常需要在客户机上安装相应的运行插件(如Flash插件),服务端将数据传递客户端,客户端接收数据绘制相应图表。由于图表在客户端生成,其对客户端要求比较高,无法满足不同终端、不同平台的用户体验,而且速度比较慢,无法适应现代高速互联网的发展。
随着信息技术的发展,瘦客户端图表绘制形式逐渐成为主流,即服务端直接将运算数据生成的图像传递给客户端,客户端无需处理数据,图表在Web浏览器即可动态显示[2]。目前基于该形式的Web图表绘制组件较多,如JFreeChart、FusionCharts与Open Flash Chart等,其中JFreeChart以其强大的功能、出色的制图效果及便捷的操作方法在Java领域已得到广泛应用,特别是其与Vaadin开发框架的结合,应用于Web APP的开发,实现了业务层与表现层的代码分离,大幅降低了开发人员的开发量与维护量。本文通过结合JFreeChart开源图形包的特点、工作原理及开发流程,基于Vaadin开发框架,设计并实现了转子动平衡计算数据的动态图形显示。
龙源期刊网 http://www.qikan.com.cn
1JFreeChart概述与研究进展 1.1功能特性
JFreeChart是Java中开源的制图组件,主要用于生成各种动态图表。在Java的图形报表技术中,JFreeChart组件提供了方便、快捷、灵活的制图方法,能够生成各种各样的图形报表,如提供饼图(二维/三维)、柱状图(水平/垂直)、线图、点图、时间变化图、甘特图、股票行情图、混和图、温度计图、刻度图等常用商用图表,显示在应用程序中。JFreeChart广泛的功能包括:丰富的API,支持各种各样的图表类型;灵活的设计,易于扩展,适应服务器端与客户端的应用;支持多种类型的输出,包括Swing界面、图像文件(包括PNG、JPEG格式)与矢量图形文件格式。
JFreeChart主要特征如下:①定义接口的任何实现通俗易懂;②易于导出PNG与JPEG图像文件格式(也可以使用Java的图像I/O类库生成类库支持的任何格式),使用Graphics2D工具导出其它格式;③使用iText工具导出PDF格式文件,使用Batik工具导出SVG格式文件;④图像工具栏,图像丰富、美观;⑤图表支持鼠标事件,支持注解;⑥产生HTML图像映射;⑦支持JDBC,可动态显示来自多种数据库的数据;⑧可以工作于
Application/Servlets/Jsp/Applets等环境;⑨完全开源,严格遵守GNU的通用公共认证协议。 1.2工作原理及开发流程
基于JFreeChart的瘦客户端图形绘制组件工作原理如下:客户端(Client)通过Web浏览器向服务器端(Server)发送应用请求,服务器端接受请求后,基于用户业务逻辑需求,从客户端提供的数据或数据接口中获取相关数据,在服务器端经过数据整理后,构造图表所需的数据集,并由JFreeChart引擎加载此数据集,在服务器端生成临时图片文件,将图片的地址返回给客户端浏览器,以图片形式显示在Web浏览器上[3],如图1所示。 JFreeChart的开发流程如图2所示。 1.3研究进展
基于JFreeChart强大的功能特性及成熟的技术支持,众多软件开发者将其应用于不同终端的应用程序开发,并取得了显著的研究成果。文献[4]研究了JFreeChart绘制图形的方法及开发流程,并绘制出某石油公司用电数据统计曲线图。文献[5]基于J2EE技术的B/S架构模式,采用Struts与Hibernate的轻量级框架结构,应用JFreeChart将报表数据动态生成多样化、直观化的年度、月度、日度图形报表。文献[6]指出Applet图形绘制的安全隐患,将JFreeChart应用于JSP图形开发,实现了JFreeChart图表的共享与在线更新。文献[7]将JFreeChart的Java动态图形报表技术应用于铁路机车运行状态中,实现了对机车设备的远程监视。基于JFreeChart绘制Web统计图表,不仅提高了开发效率,也降低了项目成本。由于对JFreeChart API的封装,
龙源期刊网 http://www.qikan.com.cn
开发人员在作扩展时,无需再过多地关注于繁琐的JFreeChart API,从而能将更多时间、精力投入到具体的业务逻辑上[8]。
目前,JFreeChart已广泛应用于J2EE、Struts、Spring和Hibernate等开发框架,但基于前端的Vaadin开发框架开发Web APP应用程序时应用较少。本文将JFreeChart与Vaadin结合,设计并实现了转子动平衡计算数据的动态图形显示,为动平衡块的安装提供了直观形象的指导。
2系统开发与应用 2.1开发框架
为实现转子动平衡计算在智能手机、PAD等移动终端的应用需求,同时兼顾系统交互性与功能性,系统基于Vaadin开发框架设计与实现。Vaadin是一个用于创建富客户端(RIA)应用程序的前端开发框架[9],应用程序在不同终端与平台实现时都基于相同的框架,其具有种类丰富与功能完善的界面表现、灵活的数据监听处理功能,同时能兼顾跨平台、跨终端的触屏交互、动画切换等移动特性。
系统所有的计算功能都在Web服务器端实现,用户通过Web浏览器与系统交互,Vaadin客户端引擎将原始数据发送给Servlet容器中的终端适配器,终端适配器通过Web服务器接收来自客户端的用户请求,调用相应的计算模块,将用户请求转换为特定会话中的用户事件。每个用户事件都与服务器端的相应UI组件关联,终端适配器会根据UI组件的改变生成相应的响应,并发送到客户端的Web浏览器中。客户端浏览器中的客户端引擎接收该响应,并将响应内容渲染在Web页面的UI界面上[10]。
以动平衡试重计算为例,如图3所示,当用户输入基本参数之后,系统UI组件检测用户输入合法性,检测到非法输入将出现提示信息。用户输入正确数据后,点击“计算”按钮,绑定在“计算”按钮组件上的监听器会立即触发Button.ClickEvent事件,并通过HTTP连接以事件的形式将原始输入数据传回服务器端组件。服务器端组件再将该事件转送应用程序的逻辑处理代码,通过监听逻辑代码中的事件处理逻辑(Button.ClickListener监听事件),首先获取用户输入的原始数据,转换输入字符串为数值,调用相应的计算模块处理数据,再将计算结果绑定到UI组件上,服务器端UI组件状态发生变化,终端适配器发送相应响应,客户端的Web浏览器接收该响应并进行渲染,如绘制平衡块安装示意图。 2.2关键技术
(1)基于Vaadin的转子动平衡计算系统,其功能表现为用户输入数据、显示计算结果与绘制平衡块安装示意图。系统采用基于Vaadin的B/S技术架构模式,并利用Vaadin的MVC分层设计模式,前台界面显示层、逻辑业务层的代码是完全分离的,只有当程序运行时,具体