Author: 江南白衣
JDK5.0的应用已经越来越多,如果SpringSide仍然固守JDK1.4,会受到越来越多的局限,见Springside中JDK5.0的使用 。
但为了不自绝于人民,为了兼容目前大部分运行中的系统,尤其是最高只能跑JDK1.4的Weblogic 8.1系列。采用Retrotranslator 保证可以兼容部署到JDK1.4的服务器上,见Retrotranslator JDK1.4 兼容指南 。
作为Java EE的Full-Stack Framework,Spring 2 暂时没有竞争者。
Hibernate 虽然有种种不足,但毕竟还是最好的。
当然,未来还要支持JPA/EJB3.0。
选用此方案是因为JSPer不用特别学习什么,就能动手开工。
喜欢Multiaction Controller(注,不是SimpleFormController) 说白了是因为它仍然保留着servlet的形态, 没有新名词新概念,没有form bean,没有复杂配置文件, 只有与spring的天然结合与少量utils ,最接近于ROR,是拥有成本最低的MVC框架。
Spring MVC的基本特征见Spring MVC之写给在用其他MVC框架的程序员入门
同时,我们也为高端开发人员提供了WebWork的选择。
因为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。
XFire
作为新一代Pragmatic型Web
Service框架,现在的主要竞争对象还是Apache的Axis2。
但出于对Apache学院派的恐惧,暂时选择XFire。XFire在与Spring结合,导出POJO为Service,还有简化Binding上都做得不错,是一个充满Pragmatic味道的方案,不过Axis2在协议支持上做得要足一些。
Acegi是一个依靠Spring迅速走红的安全框架, 在安全方面的框子已经搭的挺全, 不过仍然有很多地方需要扩展才能真正使用。
比如把权限配在xml文件里根本就是玩具,SpringSide将RBAC的权限配置改在数据库保存,并且增加Web界面的管理功能。
Eclipse BIRT的竞争对手,应该是收费的Crystal Report。JasperReport +
IReport的组合根本没有与它对战的资格。
因为BIRT设计报表时类似Dreamweaver的方式,比JasperReport高太多了,而且支持到很多很企业级的feature。
DWR +Prototype.js +TrimPath JSTemplate 的3R组合,可以根据不同需求灵活的应用不同的解决方案。
比如传统的Ajax使用可以简单使用Prototype.js 。
而 DWR能直接操作远程的Service对象。
JSTemplate 用类似FreeMarker的语法,解决了DWR从Server返回POJO对象后的页面渲染。
Dojo 提供了一堆很不错的widgets,让一直被认为不够Rich Client的B/S 应用有了改进的机会,虽然有点重有点慢,但受到了越来越多方案的追捧。
Sun的JMaki 则将 Dojo, Script.aculo.us, Yahoo UI Widgets, Spry, DHTML Goodies 中的一些部件封装成TagLib,如果说上述框架都还需要js编码,Jmaki就真正做到了为html扩展富客户端的控件标记。
Drools变身为JBoss Rules 3.0 后已经拥有了很好的规则语法,平民级的DSL语言映射法和基于Eclipse规则的编辑器,前景明亮,直追商业的ILog。
ActiveMQ+Jenck是一个withdout Application Server,但效能一样不减的Message Drivern POJO的JMS组合方案。
而Lingo是让JMS更加脱离底层协议,彻底面向对象。
Compass 与Spring、Hibernate的结合,简单的通过Annotation或XML配置文件将Domain对象 转为Lucene Searchable,并提供了现成的Index和Search的Controller,并且提供索引实时自动更新,可以快速实现企业应用搜索。
在JBpm vs shark vs osworkflow中,我们选择了JBpm。
Quartz 作为定时执行者,主要竞争者是IBM,BEA合作搞的CommonJ, 但CommonJ只在两家超贵的应用服务器的最新版上存在。
我们比较喜欢Commons-Validator这样在一个地方定义元数据,能同时在Server and Client Side生效的Validator Framework。
不过Commons-Validator的语法有够麻烦的,关注Spring Modules自写的Validator。
ExtremeTable 的主要PK对象是DisplayTag,因为ExtremeTable更易于定制样式和二次开发,而且ExtremeTable发展迅速,不断地有新功能推出。
JMock 要求TestCase继承于MockObjectTestCase太霸道了。妨碍了我继承于Spring2.0的ModelAndViewTestCase等很多情况,因此采用没那么霸道的easyMock。另外,easyMock的脚本录制虽不如jmock那么优美,但胜在简短易读。jmock那句太长了 。
Selenium 则是很Pragmatic的对Web应用功能测试,集成测试的工具。