2006年Java開發技術回顧與展望

xuniji123發表於2007-01-01
又是一年終歲尾,伴隨著技術行業的煙雨風雲,我們即將迎來2007年,那麼在過去的一年中,我們Java技術開發行業發生了什麼呢?

  Java開源終於在人們的千呼萬喚中開源,Hibernate釋出3.0版本似乎要在2007年大展拳腳一番,Spring釋出了2.0在2006年火熱過後,Spring也開始被人討論,Struts方面有了Webwork的加盟,期待新版本繼續揚威,EJB在05年就早早結案年初發布了3.0但是新版本似乎沒有改變被動挨打的命運,Ajax在06年沒有傑作,相對它的弱點和缺陷被披露無疑,JSP沒有人在願意提及它,好像被放在了一個被人遺忘的角落裡,JSF剛剛納入Java規範以來,Sun對JSF寄予了厚望,2006年Java界成績頻豐,2007才是彼此肉博血戰的開始。

Struts、Hibernate、EJB、Spring、Ajax等繼續成為我們關注的焦點,那麼我們接著就從2006年Java這個熱血江湖中,來看看都蘊涵著多少風雲故事。

  關鍵字1:Strust、JSF、Webwork-----MVC框架

  Java技術2006年在表示層方面可謂創新不少,,Struts在2006年沒有繼續問世時候的輝煌,隨著Web框架的興起,Struts的優勢逐步在退卻,煩瑣的配置讓它背上了重型框架的枷鎖,但是Struts並沒有因為繁重而離開人們的視野,Struts龐大的開發隊伍,是它賴以生存的強大生命力,今年Ted(Apache軟體基金會的成員)已經與Patrick(WebWork 2的高階開發者)和Jason(Webwork核心架構師)探討Struts與WebWork合併的構想,在未來Struts 2中我們將會看到一個兩者完美結合的框架結構這是Struts2的初衷,Struts2構想是我們2006年對錶示層方面產生更多的想象,相對於Struts的不斷完善與更新,JSP從2.0之後就開始止步,在Struts這些開源框架面前稍顯底氣和信心不足,開源框架慢慢在吞食著JSP的領地,

  Sun公司也不會讓自已親手打下來的江山就此灰飛煙滅,全力打造JSF收復失地, JSF的優點在於豐富可定製的UI元件,良好的事件響應機制,表達性語言,表單資料自動轉換和驗證等,如果在配有良好的開發工具支援的話,也許這將成為眾多開源表示層框架的末日。開發人員都清楚開源框架帶來的無限驚喜,提高了開發效率,降低了複雜程度,但面對滿天的框架時,恐怕心中只有暗暗叫苦的份了。大量知名的不知名的框架,佈滿了Java Web世界,也漸漸的迷失了眾人的雙眼,誓必要有一種集眾家所長的框架出現,來改變技術頻多,但都營養不良的框架技術,今年Sun公司把JSF納入JavaEE規範,JSF終於從幕後走向前臺。

  關鍵字2: Spring、EJB -----輕重級企業開發框架

  業務元件層前期基本是EJB的天下,但是EJB功能實在太強大,它考慮了世界頂級大型系統需求,因此免不了顯得很複雜,當初,基本上所有的大型企業高階都是選用J2EE,選用J2EE實際是選用EJB。EJB強調的高可伸縮性為大型企業日益發展提供最大的發展空間,不再因為企業快速發展導致整個企業系統結構都要發生根本變化,這是使用EJB的現實優勢。然而,這個曾經風靡一時的技術, 現在確成了Java領域裡中最受爭議的技術,它的繁瑣複雜把很多人拒之門外,它深奧的理論讓一些人如痴如醉大唱讚歌,可是它的博學幾人又能讀懂?2005年底Ejb草草結案,在2006年推出EJB3.0,EJB3.0的宗旨是從某種程度上減輕了開發人員進行底層開發的工作量,取消或最小化了很多(以前這些是必須實現)回撥方法的實現,並且降低了實體Bean及O/R對映模型的複雜性。

  EJB3.0雖然在簡化開發上做足了功課,但是已錯過最好的發展良機,EJB未來的尷尬處境還不會在短時間內改變。

  與重量級相比的是輕量級,業務元件層輕量級解決方案有Spring/HiveMidn等,輕量一詞曾經因為EJB的出現而變得時髦,給人造成的感覺是:EJB花了大力氣打造的那些功能,使用輕量級解決方案可以輕而易舉完成,雖然這可能是一種錯誤的觀點,但是,Spring的推出著實吸引了不少人的眼光.

  面對EJB3.0的挑戰,Spring也不敢示弱,在今年10月份釋出2.0版本,來抵制Ejb的圍攻,新版本在原基礎上強調了三個理念:簡潔、強大、健壯。較之前版本做了以下增強:

  1、IOC的增強,可以自定義Beans的應用範圍

  2、XML增強,支援namespace

  3、AOP的增強,採用了AspectJ的優點更加高效地識別程式中需要應用的切點

  4、JMS的增強,最佳化JMS訊息的conusme以及本地事務處理

  5、支援多種web開發語言,ruby,groovy以及beanshell

  6、MVC的增強,增強了Form表單校驗功能

  7、增加了對門戶的支援

  8、引入了Java5的metadata功能間接增強了對OR工具的增強

  這些新功能帶著濃濃的火藥味,堅決要把EJB逐出這個陣營,凡事要從兩個方面來看,有一得就有一失,Spring雖然在功能繼續加強攻勢,但是繁煩和複雜的配置也伴隨著它一起來到人們面前,Spring切記EJB的教訓,不要步EJB的後塵。

  關鍵字3:Hibernate、JDO-----資料持久層框架

  如果說在Web世界的表現層和業務邏輯層的競爭還略顯溫和的話,那麼在資料持久層的競爭可謂軍閥割據、血流成河。

  2006年我們不得不提的一項技術就是Hibernate框架,帶著對資料庫操作靈活易用的優點在物件持久層框架中迅速的佔領一席之地,同時Hibernate劍峰指向EJB的實體 Bean。由於EJB的持久化技術一直是EJB致命的硬傷,成為EJB揮之不去的陰影,並最終促成了Hibernate的輝煌。

  在業務層方面Spring一支獨大,似乎Spring並不滿足目前現狀,釋出的2.0版本增強了對持久化層方面的設計,Spring的突然攪局,不得不讓Hibernate綁緊了神經,Spring新版本釋出不到一週Hibernate就匆匆推出3.2版本,來回應Spring和Ejb,Spring想在持久層方面有所建樹,Ejb想用新版本搶佔自已失地,但是Hibernate的老大地位依然無人憾動。

  前不久我在網上看到一篇文章為Hibernate列舉了五大罪證:

  一、Hibernate可以設計很多解決方案,究竟哪個更適合我們無法判斷?光是主鍵生成,就有七八種方案供你選擇,你為難不為難?

  二、集合屬性可以用Set,也可以用List,還可以用Bag,到底哪個效率高,你為難不為難?

  三、查詢可以用Iterator,可以用List,哪個好,有什麼區別?你為難不為難?

  四、複合主鍵你可以直接在hbm裡面配置,也可以自定義CustomerType,哪種比較好些?你為難不為難?

  五、對於一個表,你可以選擇單一對映一個物件,也可以對映成父子物件,還可以對映成兩個1:1的物件,在什麼情況下用哪種方案比較好,你為難不為難?”

  Hibernate擄獲太多人的心,這五大罪證,不會影響Hibernate前進的腳步,也不會阻止學習Hibernate的熱情,連軟體富豪微軟也不得不對其敬畏三分,NHibernate殺入.NET開發領域,足以證明Hibernate的未來不容質疑,2007年還將繼續走紅。

  JDO可以算是Hibernate時代的一個”悲情人物”,JDO和Hibernate的O/R對映類似,所不同的是,JDO使用了不同型別的查詢API,也就是JDKQL,而不是Hibernate的HQL。JDO可以透過被管制的持久化物件很靈活地感知每個欄位值的變化。單從JDO本身來說,這種技術是很好的,但一種技術的興衰不僅僅取決於技術本身,而更大程度上取決於是否有更多的廠商支援這種技術。由於JDO最初是由Sun提出來的,Sun本來打算使JDO成為資料持久化的規範,但由於JDO沒有得到大多數廠商的支援,因此,JDO技術雖然現在有一定的應用,但它並不是標準的Java規範,JDO在2006年沒有太大動作來看,不排除將會從這個市場上出局的命運。

  2007年我們有哪些技術值得期待呢?

  Java開源:對業界和開發人員以後產生哪些影響,就目前還沒顯現,在2007年這些影響將會體現出來。

  2007年的重頭戲將是JSF,由於Sun對JSF寄予厚望,因此,近來關於JSF的爭論也開始多了起來,各大廠商也開對JSF投入更多的關注度,Orcale,IBM,和國內的金蝶等軟體巨頭已經把目標鎖定在JSF身上,看來2007年稱為JSF年不是美麗的慌言。而AJAX雖然可以實現豐富的Web前端介面,但由於編寫AJAX程式的工作量非常大,因此,單純的AJAX應用也許不會大面積鋪開,但自從微軟推出Atlas(一種包裝AJAX技術的視覺化元件)後,AJAX好象又開始升溫了,也許在未來,JSF和Atlas會上演一場龍爭虎鬥的好戲。

  Struts將重新回到焦點的位置了。在即將推出的Struts2.0中增加了很多的新功能,而且Struts又和Webwork進行結盟,Webwork加入Struts會展現一個什麼的框架結構,我們還不得而知,也許它們的結合會再次帶動Struts社群的狂熱。

  2006年說最爛的一個詞就是SOA了,SOA是一個框架,還是一種思想,我們一直沒有看到它廬山真面目,到底SOA是什麼,大家都在說業界都在關注,IBM、BEA、ORCALE連Sun公司的Netbean也釋出自已的SOA解決方案,宣稱產品支援SOA,這麼熱的一個名詞在2007會掀起什麼樣的波瀾,在Java界會對誰發起衝擊我們還要在2007年揭曉。

  在持久化層方面,在2007年在這一層當之無愧的焦點當數Hibernate和EJB3.0了,從EJB3.0的規範中可以看出,EJB3.0的實體Bean採用了和Hibernate類似的模式,在EJB3.0中也可以選擇使用傳統的模式和Hibernate模式。這就意味著EJB3.0和Hibernate有可能走向融合。最終在資料持久層中統一採用類似於Hibnerate模式的輕量級框架形式。

  這是一種想法,也是我們所有開發人員一種期待。

  在業務層方面,2007不會有太多閃光的地方,Spring還將穩定發展下去,EJB不會攪亂現有的固定格局, Spring在10月份釋出新版本足以穩定07年的戰略地位。

  在這些層面之外,還有很多誘人的非Java技術會吸引大量的眼球。在2005年有人就預言Ruby將消失滅跡,但是這種現象,沒有在2006年出現,反而越活越精神,年初發布Rails1.1版本,年底釋出推出rails1.2RC版本,Ruby的熱頭不容小看,有人把它比做新兵挑戰老將的神秘武器,敏捷的Web開發讓很多的框架暗然失色,指令碼語言在2007年還是充滿想象的。

  2006年是Java界備受關注的一年,也成績頻豐的一年,Hibernate繼續領跑,Spring動力不足,Struts期待新版改變現狀,JSP已青春不在,JSF被寄予厚望,2007年誰能獨領風騷?我們在預測,業界也在觀望,這些未知的答案讓我們在2006年細細的品味,新的一年也許會有新驚喜。

[@more@]

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

相關文章