排名次序不分先后。
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。
需要更多研究到底誰能更多減少代碼量。