JavaEE 快速开发框架 Wabacus

Wabacus是一个JavaEE快速开发框架,采用面向声明的开发模式,可以不用编程或极少编程即可实现复杂的数据展示、数据编辑、表单处理等功能,将JavaEE的开发效率提高5倍以上,代码减少60%以上。 
 
项目地址:http://code.google.com/p/wabacus 

论坛地址:http://wabacus.btedu.gov.cn/ 

1、Wabacus是什么? 

Wabacus是一个JavaEE快速开发框架,能快速实现完整的JavaEE功能,包括前台后台,因此与常见的框架jQuery、Extjs、Struts、Spring、Hibernate等不同,它们均只提供某一个方面的解决方案,开发人员必须组合使用它们才能完成JavaEE功能的开发。 

另外,Wabacus与国内的很多快速开发平台也不同,国内很多快速开发平台只是对常用功能进行了一下封装,或者对简单基础代码进行了一下自动生成,并没有在开发思想这个层次上有什么改进,这种改变只能说是“物理变化”,而不是“化学变化”。 

Wabacus则是在开发思想这个层次上进行改进,最大限度将开发人员从考虑“如何做”中解放出来,只需考虑做什么即可。因此与传统开发思想相比,相当于发生了“化学变化”,能成倍地提高JavaEE开发效率。

2、Wabacus所适用的领域,提供了哪些功能? 

Wabacus是一个JavaEE快速开发框架,能适用于任意类型的JavaEE项目、产品及应用。不过由于前台展示采用的是JS/CSS/HTML等,因此也只适用于B/S结构的JavaEE项目,对于采用AWT/SWT等进行前台展示的C/S结构的项目则不适用。 

Wabacus框架不仅从开发思想层面给开发人员带来了很大的好处,让他们尽量从“如何做”中解放出来,而且对常用且很多是很复杂的功能提供了良好的支持,让开发人员要开发这些功能时变得非常容易,只需简单声明即可,例如: 

列过滤、列选择、冻结行列标题的报表、输入联想、文件上传/下载、行/列分组报表、树形表格、数据导入/导出、数据打印、交叉统计报表、主从报表、行排序等。 

当然,Wabacus框架给开发人员带来的好处主要还是开发思想方面的根本改进,这个才是主要的,带来的好处也是巨大的。

3、开发这个框架的初衷,它与其它框架相比有什么优势? 

本人从事JavaEE开发与架构将近9年的时间,后面大部分时间是负责公司各类项目、产品方面的架构设计,在这方面积累了较为丰富的经验,这个框架的思想也是多年架构经验的积累,用过在很多项目和产品中,取得了非常好的效果,凡是本人用这个思想设计的架构,在前期开发和后期维护方面都非常方便,新进来的开发人员能快速上手,后期的各种维护改造工作也很容易。 

印象比较深的就是用这个思想开发的一个大型网站项目,在开发时,几个开发人员快速地配置了几百个数据展示功能,在后期维护差不多每年一次的改版中,这几百个数据展示功能也是最容易和方便改的,只要改几个JS/CSS文件以及少数的几个系统级配置文件就可以对它们的显示效果、显示结构进行整体调整。因此在项目组和客户方面都反映非常好。 

正是基于这些项目、产品的成功实施经验,本人决定将这个思想转化为一个成熟的框架,让更多朋友受益,也改变一下国内开源框架原创性比较少的局面(比如国外搞IOC、AOP、O/R Mapping等方面的框架,国内很多朋友也是照着这些思想搞这些方面的框架,只是实现方式上进行一些改变,没有提出原创性的思想)。 


关于和其它框架的比较,我认为Wabacus最大的优势就是开发思想的改进,将开发人员由传统的“面向过程”、“面向对象”思想中转入更容易、更高效的“面向声明”的思想中,大幅提高开发效率和降低开发复杂度。

4、代码减少60%,开发效率提升5倍以上,是如何实现的? 

首先说明一下,这里说的“60%”、“5倍”都是一个概数,不是一个精确值,因为开发效率不能像性能一样,能通过工具准确定量测试,就好比问“交流时说话比打字快多少倍?”一样,我们也不能给出一个精确数,因为打字有快有慢,说话的语速也有快有慢,没办法精确说一定快多少倍,但我们知道整体上要快好几倍。 

wabacus为什么能大幅减少代码量,成倍提高开发效率呢?原因就是它采用“面向声明”的开发思想,我们来介绍一下什么是“面向声明”的开发思想: 

所谓“声明”,就是只要把要做的功能说出来,而不需开发人员考虑如何实现,具体如何实现交给Wabacus来完成,就好比“视频聊天”,只要把字说出来,而不需考虑如何写出这些字,就能表达自己的意思,因此比“写字聊天”、“打字聊天”的方式都要快很多倍,因为后两种方式都要考虑将字实现出来才能表达自己的意思,而传统的开发思想就好比“写字聊天”或“打字聊天”,要开发人员编写大量的代码将“字”实现出来。 

使用wabacus开发,不仅大幅提高了开发效率,而且对开发人员的要求也比较低,因为不太需要关注实现,只需声明,就好比“视频聊天”一样,不需考虑将字写出来,因此文盲都能顺利地交流。 

其实面向声明的开发思想也不是Wabacus独创,在很多框架中都有使用,而且都取得非常不错的效果。比如Spring,就是将对象的依赖关系做成可声明,提高对象依赖的灵活性和可维护性;再比如EJB或Spring,提供声明性事务,提高了事务控制的灵活性,减低了开发难度等等。但是它们只是着眼某一个方面,做的不够彻底,带来的改善是局部的。而Wabacus框架在更大的范围提供了声明性编程,尽量将用户的整体开发效率提到最高,所以它对JavaEE开发带来的好处是立体的,全方位的。

5、Wabacus扩展性如何? 

Wabacus做为一个框架,需要满足各种复杂的场合,因此非常注重可扩展性,也提供了非常灵活的扩展接口,大体体现在如下方面: 

  • 允许开发人员新增容器类型、报表/表单类型、数据类型、输入框类型,数据源类型等等,并允许用户在新增这些类型时,在配置文件中为这些类型新增自己的配置属性和配置标签。
  • 允许开发人员在拦截器的各拦截方法中控制报表/表单各个生命周期的行为,比如控制加载、保存的数据,阻止保存操作或者自己完成保存操作等等。
  • 允许开发人员在静态模板、动态模板中控制报表/表单的显示,并且可以在其中自己定制输入框。
Wabacus灵活的可扩展性源于它优雅的面向对象设计,看过Wabacus源码的,即使只看懂了一部分的朋友,都会对Wabacus的巧妙设计有着很深的印象。曾经有一个8年JavaEE开发经验的架构师,在研究Wabacus源码超过2个多月后对此有过高度评价。

6、Wabacus能否与其它框架共存在同一个项目中,比如在已有项目中加入Wabacus框架快速开发新功能? 

Wabacus前台采用的是标准JS/CSS/HTML,后台采用的是标准Java实现,都没有用到其它框架,从它依赖的第三方jar包中可以看到,除了数据库驱动包,只有少数几个第三方组件,因此不会与任何现有的框架有冲突,可以与它们(比如常用的SSH、SSI等)共存在一个项目中。 

现在使用框架的朋友中,有很大一部分都是在老项目中用Wabacus开发新功能,而之前用其它框架开发的功能要么保持不变,要么逐步迁移,运行时互不影响。 

根据本人这么久的技术支持经验,很多朋友在用了Wabacus以后,虽然项目中可能还有其它框架,但有了新需求,第一时间想到的就是如何用Wabacus来实现,尽量避开其它框架,因为相比其它框架,Wabacus的开发效率高太多,只有当使用Wabacus不方便实现的时候,才会用其它框架开发。

7、Wabacus支持哪些数据库类型? 

Wabacus内置了对SQL Server、Oracle、MySQL、DB2四种常用数据库的支持,每个数据库类型对应一个Provider类,比如Oracle数据库的Provider类为:com.wabacus.config.database.type.Oracle,MySQL的Provider类为:com.wabacus.config.database.type.MySql等等,如果要新增对其它数据库的支持,只要参照内置的数据库类型提供一个相应的Provider类即可。

8、早期没有完全开放源码,是什么原因? 

Wabacus的源代码开放是逐步的,在早期,只公开了80%左右的Java源码,后面又开放了99%的源码, 现在已经将所有Java源代码开放了。 

早期没有开放所有源码是没有对所有朋友开放源码,但对正在使用框架的朋友还是开放了他们想修改的任意源码,也就是说他们想修改的源码如果没有在公开的80%或99%之中,他们是可以向我要的,我会发给他们,并教他们如何改。这样做的目的有两个: 第一、鼓励大家使用框架;第二:早期版本不够稳定,我有可能会进行比较大的重构,因此如果让他们修改了太多源码的话,以后升级会非常困难。 

不过现在Wabacus架构已经非常成熟,所有Java源代码都已经公开了。

9、你所知道的有哪些项目使用了该框架? 

因为一般项目用了什么框架都是一个保密的内容,很多朋友不愿公开,尤其是外网能访问到的网站之类的项目更是这样,包括我自己用Wabacus的思想开发的大型门户网站,也不愿意公开说出是哪一家,所以很多使用Wabacus的用户我也不知道他们的项目名字,这里我列出一些愿意公开的项目: 

  • 金昶网络科技电信增值业务平台www.codecademy.com/FggCYAPpIh/codebits/dLwJNQ
  • 哈尔滨市文化和新闻出版局办公系统
  • 实联化工业务支撑系统
  • 爱尔英语办公系统
  • 威海市公安信通部门办公系统
  • 江苏无锡某银行营业网点业务支持系统、资金流监控系统
  • 哈尔滨工程大学综合评教系统
其他更多的项目可以从Wabacus的论坛上通过别人的提问看得到,不过那里只是一部分用户的发贴,还有很多是私下找我咨询,没有在论坛上发贴。

10、用户如何提交bug、参与贡献? 

目前用户如果在使用过程中发现BUG,或者有需要改进的地方,都是通过在QQ或QQ群中联系我,然后我登记下来,尽早解决。此外,还可以通过在Wabacus论坛中登记BUG。 

目前用户参与贡献都是进行比较外围的工作,比如录制视频、对新手进行技术支持、制作新的主题风格、提供DEMO演示服务器和论坛服务器、进行捐助等等,在框架开发上的贡献较少。 

Tephra取火山灰之意,因为当初好像刚好有个火山喷发了,而且觉得火山灰是一个毁灭者,但同时又是一个创造者。他毁灭了旧的体系,然后开始用他自己的养分创造新的体系。目前看来,他确实已经毁灭了我之前的架构(封印在SVN上很久了),接下来就看看他如何创建一个新的体系了。 先说说核心思想,我一直向开发人员推荐面向接口的编程思想,因为我觉得这是一个很Nice的指导方向,可以让你的代码更加简洁,读之欣然。 混合Scala编程是一个大胆的尝试,可以弥补Java的一些弱点;当然,主要还是基于Java开发,至少一开始如此。 Spring仍旧是核心的组件,当然仍旧没有使用太多的Spring,因为我觉得Spring后面的很多功能已经背离了早先的设计思想,变成一个想包罗万象的大家伙。Tephra中对于Spring的使用仍旧仅局限于IoC和AOP,因为我觉得这哥俩才是Spring最吸引人的地方。 Hibernate是后来又补上的,最早的版本没有是因为第一个版本是为游戏服务器架构的,唯快不破的准则放弃了Hibernate,而后面增加回来是基于后台管理功能的需要。这一过程纠正了我一个开发框架中只能存在一个ORM的想法。没人规定不可以,是吧?! Struts一开始就被放弃了,主要是因为安全漏洞太多了。然后根据自己多年使用Struts的经验和习惯,开发了专属于Tephra的控制层,功能简单,但是高效。因为没有像OGNL那么强大的参数映射功能,所以类似的安全漏洞应该不存在;不过为了调试方便后门还是需要的,有上锁了,应该是安全的。 JSON成为了Tephra最主要的数据传输格式,轻量、跨平台、跨终端,别无他选,至少目前如此。 最后说说Maven,确实比Ant进步不少,也许这也是一个毁灭旧体系,创建新体系的过程吧。 部署蓝图 | 快速开始 特性 Tephra旨在构建一个稳定、高效、易于集群、快速扩展的JavaEE开发框架。目前,Tephra已经具备了以下特性: 提供类级别的热更新,但仅建议在需要快速修正严重BUG、并且无法立即进行全更新时使用。 提供全冗余方式的缓存,自动在每个节点间同步缓存数据,而每个节点都仅从本地内存中获取缓存数据,从而提供高效的执行效率,并且当部分节点宕机时仍旧能正常提供服务。当然,也允许使用Redis提供统一的中心节点缓存。此特性可用于多节点负载时提供不停服更新。 提供数据库读写分离、及读负载均衡,并且允许配置多个不同的数据库,甚至允许在运行期间增加新的数据库配置,并自动映射ORM。允许执行标准的SQL或存储过程,同时提供了一个简单、轻量的ORM工具,并集成Hibernate、MyBatis为复杂ORM需求提供支持。 提供MongoDB工具实现对NoSQL的支持,支持负载均衡。 提供轻量级、快速响应的控制器,允许设置最大并发峰值,以确保在突如其来的并发攻击后能继续正常提供服务;也允许设置单IP最大并发量,确保小量IP并发攻击时仍能正常提供服务。允许发布为HTTP(S)、WebSocket、Socket服务。 提供JavaScript脚本引擎支持,允许JavaScript与JavaBean自由交互,并且可以发布JavaScript为服务;以及使用Javacript作为复杂规则验证器。 提供Hadoop存取支持。 模块化开发,使用注解简化配置,增强代码可读性与维护性。 组件图 组件图 单元测试组件图 模块说明 core——基础模块。 dao——持久化模块。 ctrl——控制层模块。 ctrl-http——HTTP(S)模块。 ctrl-socket——Socket模块。 script——脚本(JavaScript)模块。 wormhole——Wormhole访问支持。 carousel——Carousel访问支持。 hadoop——Hadoop访问支持。 *test——单元测试支持。
Tephra旨在构建一个稳定、高效、易于集群、快速扩展的JavaEE开发框架。目前,Tephra已经具备了以下特性: 提供类级别的热更新,但仅建议在需要快速修正严重BUG、并且无法立即进行全更新时使用。 提供全冗余方式的缓存,自动在每个节点间同步缓存数据,而每个节点都仅从本地内存中获取缓存数据,从而提供高效的执行效率,并且当部分节点宕机时仍旧能正常提供服务。当然,也允许使用Redis提供统一的中心节点缓存。此特性可用于多节点负载时提供不停服更新。 提供数据库读写分离、及读负载均衡,并且允许配置多个不同的数据库,甚至允许在运行期间增加新的数据库配置,并自动映射ORM。允许执行标准的SQL或存储过,同时提供了一个简单、轻量的ORM工具,并集成Hibernate、MyBatis为复杂ORM需求提供支持。 提供MongoDB工具实现对NoSQL的支持,支持负载均衡。 提供轻量级、快速响应的控制器,允许设置最大并发峰值,以确保在突如其来的并发攻击后能继续正常提供服务;也允许设置单IP最大并发量,确保小量IP并发攻击时仍能正常提供服务。允许发布为HTTP(S)、WebSocket、Socket服务。 提供JavaScript脚本引擎支持,允许JavaScript与JavaBean自由交互,并且可以发布JavaScript为服务;以及使用Javacript作为复杂规则验证器。 提供Hadoop存取支持。 模块化开发,使用注解简化配置,增强代码可读性与维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值