http://www.pcdog.com 2004-12-21 Yesky
2004年Java世界發(fā)生了巨大變化,主要方面是誕生和發(fā)展了幾個(gè)新名詞:IOC 、AOP、SOA、MDA,當然,除了這些都是決定Java技術(shù)未來(lái)走向的革命性發(fā)展以外,還有很多細部和微觀(guān)的發(fā)展,我們先來(lái)談?wù)勥@些重要的細節技術(shù)發(fā)展。
首先, Java的根基JDK已經(jīng)跨越到了J2SE 1.5,或者稱(chēng)為J2SE 5.0,不過(guò),我更喜歡稱(chēng)它為1.5,延續性是我們
應用程序員更關(guān)心的,當然革命性是那些新技術(shù)發(fā)明者更陶醉的,所以他們曾經(jīng)取名J2SE 2.0,現在,為了表示這種跨越,而且跨越是非常巨大,一下子達到了J2SE5.0,非??鋸?,不過(guò)老外在技術(shù)上確實(shí)經(jīng)常極端,"偏執者才能生存"我想是其行動(dòng)主義文化的主要基礎。
J2SE1.5 最吸引眼球的我認為主要是annotate特性,該特性可以大大降低程序員的編程量,它和Java Relfect機制結合,可以編制出相當靈活的軟件系統或框架。
從J2SE1.5看出,SUN正在試圖簡(jiǎn)化Java,但是也許這一簡(jiǎn)化動(dòng)作來(lái)得遲了點(diǎn)。
同樣,珊珊來(lái)遲的是J2EE Web層的一個(gè)標準JSF,JSF使得程序員在開(kāi)發(fā)J2EE的Web程序時(shí),能夠如同開(kāi)發(fā)SWING那樣實(shí)現可視化開(kāi)發(fā),提高了開(kāi)發(fā)效率,但是必須有高級開(kāi)發(fā)工具支持。
由于好東西來(lái)得太遲,在一份最近調查中顯示,開(kāi)源項目Struts已經(jīng)在J2EE實(shí)際Web層開(kāi)發(fā)中占據主導地位,Struts在2004年是達到成熟頂點(diǎn),它的主要特點(diǎn)是將Form表單對象化,同時(shí)提供簡(jiǎn)單的XML標簽替代以前Jsp中的Java語(yǔ)言,這樣在Jsp中徹底消滅了Java代碼,除了 Struts,Tapestry這種徹底拋棄Jsp的開(kāi)源Web框架產(chǎn)品也值得一提,它和WebWork一起成為一顆引人注目的星星。
2004年發(fā)生了太多新的激動(dòng)人心的事情,其中最引人注目的是AOP和SOA的迅速發(fā)展,Java世界的發(fā)展一直以來(lái)是分兩條路線(xiàn),第一條是工業(yè)路線(xiàn),以SUN、IBM、BEA和Oracle等工業(yè)巨頭為代表的業(yè)界標準,當工業(yè)巨頭制定出EJB 2.0以后,他們認為在JavaBeans技術(shù)框架內EJB已經(jīng)走到極限,基本無(wú)需太多發(fā)展,因此,他們將關(guān)注目光投向軟件系統服務(wù)功能上,當一個(gè)個(gè) EJB組件提供了可重用的功能后,如何向不同客戶(hù)輸出這些強大的、可重用的功能呢?是反復安裝拷貝這些組件功能?還是以一種服務(wù)的方式適時(shí)提供全面的租用?SOA面向服務(wù)架構因此提出來(lái),并且得到工業(yè)界巨頭的大量投入和發(fā)展,同時(shí),他們還在關(guān)注流程的可定制化和可視化開(kāi)發(fā),通過(guò)強大的開(kāi)發(fā)平臺,可以很輕松地完成工作流的業(yè)務(wù)定制和修改。
當業(yè)界巨頭關(guān)注重點(diǎn)從JavaBeans結構轉移時(shí),一種新的設計思想和編程風(fēng)格AOP(面向方面編程)誕生了,面向方面編程是OOP面向對象編程的延續,AOP于2003年底已經(jīng)在國外熱起來(lái),到了2004年應該算是全面開(kāi)花,各種AOP產(chǎn)品如JBoss 4.0、Spring、Aspectwerkz等迅速誕生和發(fā)展,帶給程序員全新的概念和理念沖擊,AOP編程方法可以應用在軟件開(kāi)發(fā)的各個(gè)領(lǐng)域,當你發(fā)現某個(gè)功能具有普遍性和通用性以后,那么這個(gè)功能也許可以使用AOP實(shí)現,這樣你的代碼優(yōu)雅,同時(shí)可維護性和拓展性大大增強。
Ioc反轉控制應該說(shuō)有著(zhù)AOP類(lèi)似解耦思路,通過(guò)Ioc模式或容器,可以比較徹底分離JavaBeans之間的調用和被調用關(guān)系,達到真正地面向接口編程,是Ioc使的面向接口編程變得更具有意義而且重要,Ioc的產(chǎn)品如純潔的PicoContainer以及Spring等等。
開(kāi)源和業(yè)界標準的分歧不僅僅體現在JavaBeans體系發(fā)展上,還體現在對象持久化方式上,在2004年有三種流行的對象持久化在被廣泛使用: EJB的CMP、Hibernate和JDO,這三者之間的區別和聯(lián)系也是很多程序員津津樂(lè )道的,特別是Hibernate的創(chuàng )始人Gavin King不斷對JDO的質(zhì)疑,使的Hibernate名氣大升,也使的JDO一直未能夠進(jìn)入EJB的持久化標準,Spring+Hibernate架構以及使用基于JBoss的EJB架構成為低成本高質(zhì)量J2EE流行架構。
這種"混亂"的局面下,EJB 3.0標準Preview方案被2004年Java ONE大會(huì )首次提出,EJB 3.0試圖取悅那些輕量方案的追隨者,同時(shí)又能兼顧過(guò)去EJB標準的系列發(fā)展,JBoss迅速地提供了對EJB3.0支持包,其中我們看到了Gavin King這位斗士的身影。
同時(shí),Hibernate向何處去是我們應用系統程序員關(guān)心的,Struts 2.0正在向JSF標準靠攏和遷移,Hibernate是否能夠一直孤軍作戰?目前一項旨在統一J2EE持久層技術(shù)的標準方案正在啟動(dòng)中,我們期望簡(jiǎn)單統一的持久層方案出臺,減少程序員選擇遷移之苦。
2004年又是Java世界吵鬧的一年,有的程序員說(shuō):現在學(xué)java卻越學(xué)越糊涂,看了很多東西,不但大腦里沒(méi)有頭緒,反而有種走火入魔的感覺(jué),因為各種技術(shù)派別都在爭奪話(huà)語(yǔ)權,話(huà)語(yǔ)權的爭奪意味著(zhù)商機的誕生,JBoss和Spring的開(kāi)發(fā)團體先后轉為商業(yè)公司是一個(gè)證明。對于應用者來(lái)說(shuō),沒(méi)有永遠的解決方案,只有合適的工具,Java世界提供給你的是工具箱,而非一種選擇,需求是選擇工具的唯一原因。
讓我們視野從J2EE思想和技術(shù)之爭轉移到需求分析領(lǐng)域的領(lǐng)域,在這個(gè)領(lǐng)域一直也存在兩種意見(jiàn):面向數據表分析還是面向模型分析?也就是說(shuō),建立一個(gè)新的系統,是先分析設計數據表還是模型,前者是以前數據庫系統經(jīng)常采取的方式,但是這一傳統的方式目前也受到OO對象的沖擊,MDA(面向模型分析)在 2004年成熟開(kāi)花,各種Java成品也如雨后春筍一樣遍地開(kāi)花,MDA思想提出了極端觀(guān)點(diǎn):將來(lái)只有建模專(zhuān)家(其它程序員都變成藍領(lǐng)工人了),只要建模專(zhuān)家通過(guò)UML設計出一個(gè)系統的模型,通過(guò)特定的Java MDA工具就可自動(dòng)生成相應的代碼,好像真的不需要普通程序員了。
結束語(yǔ)
總之,2004年的Java技術(shù)帶給我們更多的是激動(dòng)和壓力,新技術(shù)發(fā)展以月計算,作為程序員的我們如何跟上這些新技術(shù)發(fā)展,同時(shí)能夠選擇正確的技術(shù)引入我們自己的應用系統,這些才是我們的真正挑戰。