SpringSide选型

   Author: 江南白衣 

1. JDK: JDK5.0

   JDK5.0的应用已经越来越多,如果SpringSide仍然固守JDK1.4,会受到越来越多的局限,见Springside中JDK5.0的使用 。 

   但为了不自绝于人民,为了兼容目前大部分运行中的系统,尤其是最高只能跑JDK1.4的Weblogic 8.1系列。采用Retrotranslator 保证可以兼容部署到JDK1.4的服务器上,见Retrotranslator JDK1.4 兼容指南

2. JaveEE Framework: Spring2

    作为Java EE的Full-Stack Framework,Spring 2 暂时没有竞争者。

3. ORM Framework: hibernate 3

     Hibernate 虽然有种种不足,但毕竟还是最好的。  

     当然,未来还要支持JPA/EJB3.0。

4 .MVC Framework: Spring MVC multi-action

     选用此方案是因为JSPer不用特别学习什么,就能动手开工。

     喜欢Multiaction Controller(注,不是SimpleFormController) 说白了是因为它仍然保留着servlet的形态, 没有新名词新概念,没有form bean,没有复杂配置文件, 只有与spring的天然结合与少量utils ,最接近于ROR,是拥有成本最低的MVC框架。

    Spring MVC的基本特征见Spring MVC之写给在用其他MVC框架的程序员入门

    同时,我们也为高端开发人员提供了WebWork的选择。

5. View Template: JSP 2.0

     因为JSP比Veloctiy, Freemarker有好得多的IDE,如语法超级敏感,支持Jsp重构和debug的IntelliJ IDEA。

     而且JSP2.0的EL可以在html中直接书写<p>{book.name}</p>,比<c:out>的页面已简洁无数倍,几近于Velocity。

     而且还有Extreme Table这样的现成JSP Taglib。

     不过,还是为了照顾高手们的特殊爱好,Webwork部分仍然搭配使用了Freemarker。

6. Web Service: Xfire

   XFire 作为新一代Pragmatic型Web Service框架,现在的主要竞争对象还是Apache的Axis2。
     但出于对Apache学院派的恐惧,暂时选择XFire。XFire在与Spring结合,导出POJO为Service,还有简化Binding上都做得不错,是一个充满Pragmatic味道的方案,不过Axis2在协议支持上做得要足一些。

7. 安全与权限控制: Acegi Security

 Acegi是一个依靠Spring迅速走红的安全框架, 在安全方面的框子已经搭的挺全, 不过仍然有很多地方需要扩展才能真正使用。

  比如把权限配在xml文件里根本就是玩具,SpringSide将RBAC的权限配置改在数据库保存,并且增加Web界面的管理功能。

8. 报表引擎: Eclipse BIRT

  Eclipse BIRT的竞争对手,应该是收费的Crystal Report。JasperReport + IReport的组合根本没有与它对战的资格。
       因为BIRT设计报表时类似Dreamweaver的方式,比JasperReport高太多了,而且支持到很多很企业级的feature。

9. Ajax: Prototype+DWR

  DWR  +Prototype.js +TrimPath JSTemplate  的3R组合,可以根据不同需求灵活的应用不同的解决方案。

  比如传统的Ajax使用可以简单使用Prototype.js

  而 DWR能直接操作远程的Service对象。

   JSTemplate 用类似FreeMarker的语法,解决了DWR从Server返回POJO对象后的页面渲染。

10. HTML Widgets: Dojo+Sun JMaki

  Dojo 提供了一堆很不错的widgets,让一直被认为不够Rich Client的B/S 应用有了改进的机会,虽然有点重有点慢,但受到了越来越多方案的追捧。

  Sun的JMaki 则将 Dojo, Script.aculo.us, Yahoo UI Widgets, Spry, DHTML Goodies 中的一些部件封装成TagLib,如果说上述框架都还需要js编码,Jmaki就真正做到了为html扩展富客户端的控件标记。 

11. 规则引擎: JBossRules3

  Drools变身为JBoss Rules 3.0 后已经拥有了很好的规则语法,平民级的DSL语言映射法和基于Eclipse规则的编辑器,前景明亮,直追商业的ILog。

12. JMS: ActiveMQ+Jencks+Lingo

ActiveMQ+Jenck是一个withdout Application Server,但效能一样不减的Message Drivern POJO的JMS组合方案。

而Lingo是让JMS更加脱离底层协议,彻底面向对象。

13. Search Engine: Compass+Lucene

  Compass 与Spring、Hibernate的结合,简单的通过Annotation或XML配置文件将Domain对象 转为Lucene Searchable,并提供了现成的Index和Search的Controller,并且提供索引实时自动更新,可以快速实现企业应用搜索。

14. Workflow: JBpm

在JBpm vs shark vs osworkflow中,我们选择了JBpm。

15. Task: Quartz

   Quartz 作为定时执行者,主要竞争者是IBM,BEA合作搞的CommonJ, 但CommonJ只在两家超贵的应用服务器的最新版上存在。

16.Validator Framework: Commons-Validator

   我们比较喜欢Commons-Validator这样在一个地方定义元数据,能同时在Server and Client Side生效的Validator Framework。

   不过Commons-Validator的语法有够麻烦的,关注Spring Modules自写的Validator。

17.Tabel Tag: ExtremeTable Tag

     ExtremeTable 的主要PK对象是DisplayTag,因为ExtremeTable更易于定制样式和二次开发,而且ExtremeTable发展迅速,不断地有新功能推出。

18.Test: EasyMock + Selenium

JMock 要求TestCase继承于MockObjectTestCase太霸道了。妨碍了我继承于Spring2.0的ModelAndViewTestCase等很多情况,因此采用没那么霸道的easyMock。另外,easyMock的脚本录制虽不如jmock那么优美,但胜在简短易读。jmock那句太长了 。

Selenium 则是很Pragmatic的对Web应用功能测试,集成测试的工具。