Java開源框架發展的遐想

梧桐雨—168發表於2008-03-26

上週末在杭州網俠大會做演講的時候,我說:Java開源框架的革命浪潮已經結束了,未來幾年,將是Java語言級別的革命。說實話,自從03年Hibernate火爆,04年spring流行之後,Java開源領域實在太缺乏亮點了。但是,Java的主流開源框架真的一點改進的餘地都沒有了嗎?

先來說說Hibernate吧。Hibernate確實功能強悍,但是Hibernate不夠易用,而且有一些明顯的缺陷:one-to-one必須通過bytecode enhancement才能lazy loading;不支援多型關聯;怪異的inverse配置和維護;DetachedCriteria有明顯的bug;many-to-one的eager fetch設定不夠靈活,讓Hibernate的使用者真是又愛又恨,使用起來戰戰兢兢,如履薄冰阿。Gavin King同學是個很剛愎的人,他似乎從來不覺得這些問題是問題,而且他已經把自己的主要精力放到JBoss Seam產品上面去了,也許我們只好繼續忍受了。那麼JPA呢?JPA標準就像是Hibernate模子裡面刻出來的一樣。但是為什麼人們總是在忍受Hibernate缺陷的同時,卻沒有去努力改進這些問題呢?

我想,問題的關鍵在於一些缺陷的改進需要對Hibernate整個原始碼架構進行傷筋動骨的改動,但是對於Hiberante今天所取得的壟斷地位來說,顯然Hibernate的開發者們已經缺乏足夠改進的勇氣和魄力了。


Springframework,簡直如日中天,定義了輕量級Java企業應用開發的事實標準。但是spring真的很完美嗎?我們已經聽到太多對於spring的xml bean配置檔案的抱怨。也許配置檔案不是太大的問題,spring已經開始嘗試引入annotation。但是spring的致命問題是無法方便的對動態建立的bean進行依賴注入。Google Guice的出現讓我們看到了其實prototype的bean和動態建立的bean其實也可以很容易的管理。spring自身的缺陷事實上造成了很難進行rich domain model架構的實現。

Rod Johnson創辦的interface21公司專職從事spring的諮詢,最近已經得到了1000萬美元的風險投資,是沒有足夠的資源去改進spring嗎?當然不是。是因為spring今天所取得的壟斷地位使得spring的開發者們沒用足夠的勇氣去推翻spring現在的架構,進行重大的改進。


Java的Web框架領域這兩年非常令人失望:Tapestry在升級的過程中不斷的迷失自己,喪失使用者;webwork和struts合併了兩年了,結果只搞出來一個完全webwork版本的struts2.0.6,毫無改進;JSF叫囂的厲害,卻沒有前途;wicket叫好卻不叫座;當年令人眼前一亮的stripes兩年來一直小修小補。

web框架沒有改進餘地了嗎?其實我們稍微想一下,就發現web框架大有改進餘地。例如以struts2.0為例,完全可以仿照RoR,大量使用annotation和CoC,完全消除action的配置檔案,完全消除validations配置檔案,但是struts2.0叫囂了兩年的Zero Configuration,卻乾打雷不下雨。

是的,struts2.0有一個叫做restful的actionmapping,但只是徒有其表。我們想一下,只需要稍微修改一下struts2.0的URL Mapping機制,擴充套件一下FilterDispatcher,再擴充套件幾個URL的JSP Tag,讓Struts2.0完全支援REST架構風格,完全不是什麼難事。為什麼struts2.0兩年以來毫無動靜?實在讓人無法理解。

所以Java社群其實有很多事情可以做,而且難度也未必很大,但很奇怪的是,為什麼社群顯得如此沉寂呢?沒有創新性的產品出來呢?我也想不明白。

原文作者:robbin

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13270562/viewspace-217885/,如需轉載,請註明出處,否則將追究法律責任。

相關文章