排名次序不分先后。
1. Struts
评价:成熟的展现层MVC框架。容易上手。但也有严重的缺点:
* ActionForm和Domain Model的重叠为人诟病,以至于Struts现在都要强调
它是Controller组件了。应该说ActionForm是一个试图将视图中的表单元素和
Domain Model绑定的不成功的尝试。错就错在他不应该整体绑定,而应该像Tapestry
那样将单个元素绑定到单个Field。
* ActionForm中的int字段会自动初始化成0,换成Integer还是一样,真是faint to deat
h。你就不能用null么?就算用-1也比0要好得多啊。
* 虽然提供了validation机制,但不符合实际需要。一旦validation失败,想做点后处理
都不行。只好在Action里手动调用myValidate方法。
* redirect方法根本没考虑过cluster或者前端proxy的需要。默认实现在使用相对路径时
会自动填上本机的机器名和默认端口。
可选替代:Tapestry
2. Hibernate
评价:功能强大而灵活的O/R mapping框架。不过因为都是local的,估计大型分布式系统
还是要用EJB。另外在cluster下配JVM级cache时要小心。
3. Jakarta下的commons-*系列类库
评价:最常用的是StringUtils.isBlank()方法。commons-collection也提供了很多实用的
数据结构。不过最近commons-collection出现了2.1和3.0版二进制不兼容的问题,可能会
给其他类库带来一点版本兼容性问题。
4. Log4j1.2.8
评价:多少年了版本一点也没变。不知道该恭维他寿比南山还是骂他不思进取。现在虽然
整合到了apache-logging,但什么时候出下一版还是没准。现在似乎流行通过commons-lo
gging去调用它。
可选替代:commons-logging
5. Ant
评价:有了Ant,谁还会用其他make工具。编译,打包,部署,测试一气呵成,而且内建支
持CVS和JUnit。
6. JUnit/Cactus
评价:不写单元测试的程序员不算是程序员,而不用JUnit写单元测试的程序员肯定不是J
ava程序员。JUnit影响所及,诞生了一系列其他语言的xxxUnit家族。Cactus是Junit在J2
EE下的服务器端扩展。
7. POI/iText
评价:如果不幸要动态产生Excel或者PDF,关键时刻还是可以救你一命。
8. JSTL
评价:写JSP的压箱宝贝。而且直接集成到JSP2.0中。
可选替代:Tapestry。
9. commons-digester
评价:解析XML配置文件的利器。很多人偏爱JDOM。其实比起DOM方式的空间节点树来,SA
X方式的时间事件流效率更高。特别在简单的配置文件下,实无必要去用JDOM这种庞然大物
。
10. HiveMind
评价:除Spring之外的另一个IoC内核。可以将业务逻辑彻底分解为一个个简单的service
。从而最大限度的提高代码的可复用性。不过在aspect方面可能要弱于Spring。
因为还没release,所以人气也不如Spring。
需要更多研究到底谁能更多减少代码量。