小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java 開(kāi)發(fā)環(huán)境的過(guò)去、現(xiàn)在和將來(lái)

 kukoo 2005-09-12

Java 開(kāi)發(fā)環(huán)境的過(guò)去、現(xiàn)在和將來(lái)(初稿,略有改動(dòng))

(特此感謝Kent Beck先生的鼓勵(lì)和陸廣先生的指點(diǎn))

 1995年3月23日,San Jose Mercury News登出一篇題為"Why Sun thinks Hot Java will give you a lift"的文章,在那篇文章里預(yù)言Java技術(shù)將是下一個(gè)重大事件,這個(gè)預(yù)言現(xiàn)在看來(lái)并不僅僅是商家的宣傳伎倆,雖然文章是當(dāng)時(shí)Sun的公關(guān)經(jīng)理 Lisa Poulson安排撰寫(xiě)的。從世人知道Java那一刻起到現(xiàn)在,算起來(lái)已經(jīng)過(guò)去整整十年,回顧過(guò)去的十年值得總結(jié)的東西可以有許多,但在這里筆者只想就Java 開(kāi)發(fā)環(huán)境談些個(gè)人的想法與朋友們交流一下。
現(xiàn)在的軟件開(kāi)發(fā)人員在整個(gè)軟件的開(kāi)發(fā)生命周期里,也許會(huì)根據(jù)需要使用各式各樣的開(kāi)發(fā)工具來(lái)完成相對(duì)復(fù)雜的開(kāi)發(fā)任務(wù),而在幾十年以前,人們還只是使用文本編輯器、編譯器和Debugger進(jìn)行開(kāi)發(fā),對(duì)于這個(gè)階段的開(kāi)發(fā)環(huán)境人們稱之為CLEs(Command Line Environments) 。而當(dāng)人們發(fā)現(xiàn)如果將那些單獨(dú)分開(kāi)的開(kāi)發(fā)工具集成起來(lái)就可以有效的提高開(kāi)發(fā)效率時(shí),IDEs(Integrated Development Environments)就出現(xiàn)了。第一個(gè)IDEs也許可以追溯到1964年的Dartmouth Basic,盡管這有爭(zhēng)議,它是作為Dartmouth Time Sharing System的一部分,在John Kemeny 和 Thomas Kurtz指導(dǎo)下建立起來(lái)的,這套系統(tǒng)一直使用到1999年。盡管這40多年以來(lái),開(kāi)發(fā)人員的開(kāi)發(fā)環(huán)境幾經(jīng)變化、不斷進(jìn)步,從早期的集成開(kāi)發(fā)環(huán)境 IDEs到擴(kuò)展開(kāi)發(fā)環(huán)境XDEs(eXtended Development Environments)再到協(xié)同開(kāi)發(fā)環(huán)境CDEs(Collaborative Development Environments),歷經(jīng)了幾個(gè)不同的階段,但開(kāi)發(fā)人員使用開(kāi)發(fā)環(huán)境的目的始終就是一個(gè):提高開(kāi)發(fā)效率。Java的出現(xiàn)盡管只有十年,但其開(kāi)發(fā)環(huán)境也大至經(jīng)歷了從CLEs到IDEs再到XDEs這三個(gè)階段,現(xiàn)在即將進(jìn)入CDEs階段。在上述Java開(kāi)發(fā)環(huán)境發(fā)展過(guò)程中,有許多值得我們大家關(guān)注的地方。

Java開(kāi)發(fā)環(huán)境的歷史回顧

縱觀過(guò)去十年Java開(kāi)發(fā)環(huán)境的發(fā)展,大致可以粗略的劃分為如下幾個(gè)階段:
  • 1995              命令行開(kāi)發(fā)環(huán)境CLEs
  • 1996 - 2000 集成開(kāi)發(fā)環(huán)境IDEs
  • 2001 - 2004 擴(kuò)展開(kāi)發(fā)環(huán)境XDEs
  • 2005 -           協(xié)同開(kāi)發(fā)環(huán)境CDEs
1995年,不平凡的一年,這一年Java 獲得了成功。可令人尷尬的是在1995年并沒(méi)有一個(gè)令人滿意的Java開(kāi)發(fā)環(huán)境,開(kāi)發(fā)人員在進(jìn)行Java編程時(shí),大多使用文本編輯器編輯源程序,比如,Emacs、Vi、Notepad 等,然后再使用命令行的方式進(jìn)行編譯處理。那時(shí)的Java開(kāi)發(fā)環(huán)境還處于CLEs時(shí)代,開(kāi)發(fā)效率非常低,這不能不說(shuō)是Sun的一個(gè)失誤,但也預(yù)示著在Java開(kāi)發(fā)工具上會(huì)有一番激烈的競(jìng)爭(zhēng)。與Java世界即將開(kāi)始的開(kāi)發(fā)工具大戰(zhàn)不同,在Smalltalk世界里勝負(fù)結(jié)果似乎已經(jīng)明朗,IBM的 Visual Age for Smalltalk、 ParcPlace的ObjectWorks和Digitalk的Visual Smalltalk三足鼎立的格局那時(shí)已經(jīng)被打破,IBM的Visual Age for Smalltalk所占市場(chǎng)分額越來(lái)越大,而當(dāng)時(shí)IBM進(jìn)入Smalltalk市場(chǎng)僅有兩年多的時(shí)間。IBM之所以在很短的時(shí)間超越老牌的 Smalltalk 廠商ParcPlace和Digitalk,其中一個(gè)重要原因是IBM直接將其產(chǎn)品委托給一家由軟件精英組成的公司進(jìn)行開(kāi)發(fā),這家公司就是由軟件開(kāi)發(fā)大師級(jí)的人物Dave Thomas( Bedarra-Dave)創(chuàng)建的OTI( Object Technology International)公司。IBM在1993年進(jìn)入Smalltalk市場(chǎng)的第一個(gè)產(chǎn)品ENVY/400就是OTI為其開(kāi)發(fā)的,而其后包括 Visual Age for Smalltalk在內(nèi)的多種產(chǎn)品開(kāi)發(fā)OTI都參與了。為了抗衡IBM,ParcPlace和Digitalk兩家公司在Java誕生的那一年進(jìn)行了合并,成立了名為ParcPlace-Digitalc的公司,但事后再看這次合并,不過(guò)是徒勞之舉罷了?,F(xiàn)在各廠家的Smalltalk 開(kāi)發(fā)環(huán)境中都或多或少的內(nèi)置了ENVY,而隨著IBM進(jìn)軍Java開(kāi)發(fā)工具市場(chǎng),ENVY的相關(guān)技術(shù)也被從Smalltalk世界帶入到Java開(kāi)發(fā)環(huán)境中。

1995年也是Smalltalk作為第5代編程語(yǔ)言從 Xerox Palo Alto研究中心走向市場(chǎng)的10周年,Dave Thomas為此寫(xiě)了一篇題為"Ubiquitous Applications:Embedded Systems to Mainframe"的論文,作為Smalltalk市場(chǎng)化10周年的總結(jié),文中介紹了Smalltalk是如何利用虛擬機(jī)實(shí)現(xiàn)從嵌入式到大型機(jī)廣泛應(yīng)用開(kāi)發(fā)的,而那時(shí)Java世界的人們還在為Java虛擬機(jī)的拙劣性能而苦惱,那時(shí)也許沒(méi)有人會(huì)想到現(xiàn)在Java的普及程度早已超越了Smalltalk。

有人稱1996年為互聯(lián)網(wǎng)年,有人卻稱之為Java年,還有人稱之為Web開(kāi)發(fā)年,但不論如何稱呼1996年,它都反映了一個(gè)事實(shí): Bill Joy將Java與互聯(lián)網(wǎng)相結(jié)合的策略取得了成功。這一年的9月Sun推出了其Java開(kāi)發(fā)環(huán)境-Java WorkShop,這是一款基于瀏覽器的Java開(kāi)發(fā)工具,但由于當(dāng)時(shí) Java在許多方面還不成熟,所以實(shí)際上Java WorkShop并不成功,同年發(fā)布的Symantec Visual Cafe由于還是采用C/C++語(yǔ)言進(jìn)行開(kāi)發(fā),所以性能與成熟度上就比WorkShop好得多。提到Visual Cafe就不能不提Eugene Wang,因?yàn)镋ugene Wang常常是與計(jì)算機(jī)間諜這個(gè)詞同時(shí)出現(xiàn)的人物,有人甚至講當(dāng)時(shí)Symantec的老板Gordon Eubanks與Eugene Wang簽約時(shí),也同時(shí)簽下了監(jiān)獄里的一個(gè)單元。圍繞著Eugene Wang的間諜案發(fā)生的種種事情,將Borland和Symantec兩家公司不為人知的陰暗面展現(xiàn)在公眾面前,對(duì)兩家公司的聲譽(yù)都帶來(lái)了損害。為避免雙方商業(yè)利益繼續(xù)遭受損失,最后這個(gè)間諜案以 Eugene Wang向法庭交納了一筆罰款而不了了之。Visual Cafe就是由Eugene Wang進(jìn)行主要策劃的,它是在同一年發(fā)布的Java開(kāi)發(fā)環(huán)境中,唯一解決了與數(shù)據(jù)庫(kù)連接問(wèn)題的開(kāi)發(fā)環(huán)境,帶有一套可以與數(shù)據(jù)庫(kù)相連接的組件,無(wú)需太多編程使用拖拽的方式就可完成大部分工作,這一優(yōu)點(diǎn)使得Visual Cafe受到了Java開(kāi)發(fā)人員的歡迎。這一年IBM收購(gòu)了OTI公司,從而得到了Dave Thomas的弟子John Duimovich、Dave Thomson、Mike Wilson等一大批軟件精英,這之中還包括"生活在技術(shù)刀鋒上的開(kāi)發(fā)者"Brian Barry。

1997年,由于微軟壟斷案,使得微軟在Java開(kāi)發(fā)環(huán)境上的努力受到了限制,Visual Cafe由于界面直觀易用,可以很容易地連接各種數(shù)據(jù)源等功能再次受到開(kāi)發(fā)人員的歡迎。這一年IBM發(fā)布Visualage for Java,它是用Smalltalk編寫(xiě)的吸收了許多ENVY的設(shè)計(jì)思想,比如,Visualage for Java是面向代碼庫(kù)的開(kāi)發(fā)環(huán)境,它提供代碼庫(kù)和項(xiàng)目管理以便于開(kāi)發(fā)團(tuán)隊(duì)在 C/S環(huán)境下進(jìn)行項(xiàng)目開(kāi)發(fā)。但由于大多數(shù)Java開(kāi)發(fā)人員比較熟悉面向文件的開(kāi)發(fā)環(huán)境,還不太習(xí)慣面向代碼庫(kù)的開(kāi)發(fā),再加上Visalage for Java對(duì)系統(tǒng)資源的要求比較高等因素,使得Visualage for Java一開(kāi)始未被Java開(kāi)發(fā)人員所認(rèn)可。

1998年至2000年比較成功的Java開(kāi)發(fā)環(huán)境是JBuilder,這是由于Borland較好的把握住 J2SE、J2EE和J2ME發(fā)布后,Java技術(shù)升級(jí)的時(shí)機(jī),全面支持Java1.1和Java1.2開(kāi)發(fā)平臺(tái),它還提供了多種工具方便用戶從舊的平臺(tái)遷移到新的Java平臺(tái)。JBuilder本身80%是基于JDK1.2進(jìn)行開(kāi)發(fā)的,它支持JavaBeans, Enterprise JavaBeans, JDBC等方面的應(yīng)用開(kāi)發(fā),可以連接多種關(guān)系數(shù)據(jù)庫(kù)。為支持分布式應(yīng)用開(kāi)發(fā),JBuilder還集成了 VisiBroker ORB、JSP server、數(shù)據(jù)庫(kù)和EJB AppServer,并提供Open Tools API便于第三方工具集成。上述種種的優(yōu)點(diǎn)使得JBuilder一舉超越Visual Cafe,成為當(dāng)時(shí)最受歡迎的Java開(kāi)發(fā)環(huán)境。在眾多Java開(kāi)發(fā)環(huán)境中,1999年IBM發(fā)布的VisualAge for Java Micro Edition是比較有特色的開(kāi)發(fā)環(huán)境,它是由Erich Gamma和與Erich Gamma有"焦不離孟、孟不離焦"之稱的John Wiegand共同進(jìn)行設(shè)計(jì)的,采用了Java 擴(kuò)展機(jī)制,并集成了Junit測(cè)試框架,其當(dāng)時(shí)所采用的架構(gòu)深深地影響了后來(lái)Eclipse1.0所采用的架構(gòu)。同時(shí),通過(guò) VisualAge for Java Micro Edition的開(kāi)發(fā),那些來(lái)自"未來(lái)世界"(Smalltalk們總認(rèn)為他們來(lái)自計(jì)算機(jī)的未來(lái)世界)的軟件精英們,全面徹底地對(duì) Java技術(shù)進(jìn)行了評(píng)估,得出了許多結(jié)論性的東西,這之中包括現(xiàn)在鬧得沸沸揚(yáng)揚(yáng)的Swing和SWT對(duì)比。此外,Sun將其收購(gòu)的NetBeans變成了開(kāi)源的Java IDE也是一件不大不小的事情。

縱觀1996年至2000年這五年時(shí)間里,隨著Java及其相關(guān)開(kāi)發(fā)應(yīng)用的發(fā)展,Java開(kāi)發(fā)環(huán)境也不斷的完善,從CLEs進(jìn)入到IDEs階段。為了提高Java開(kāi)發(fā)人員的開(kāi)發(fā)效率,Java開(kāi)發(fā)環(huán)境主要從兩個(gè)方面進(jìn)行改進(jìn)與提高。一方面是提高集成在Java IDEs當(dāng)中開(kāi)發(fā)工具的性能和易用性,比如從最初的代碼編輯器、編譯器、Debugger等開(kāi)發(fā)工具發(fā)展到增量編譯器、組件瀏覽器、自動(dòng)編碼和用戶界面的可視化編輯器等,以此減少Java 開(kāi)發(fā)人員輸入代碼的工作量、節(jié)省編譯時(shí)間,將Java 開(kāi)發(fā)人員寶貴的時(shí)間花費(fèi)在思考問(wèn)題上而不是輸入代碼上。另一方面是將Java開(kāi)發(fā)環(huán)境盡可能的覆蓋到整個(gè)軟件的開(kāi)發(fā)生命周期,比如,將源代碼的版本控制工具集成進(jìn)Java IDEs當(dāng)中,這樣做的好處是Java開(kāi)發(fā)人員無(wú)需離開(kāi)開(kāi)發(fā)環(huán)境就可以完成大多數(shù)實(shí)際工作,節(jié)省進(jìn)行不同工具之間的切換時(shí)間和適應(yīng)這些工具的學(xué)習(xí)時(shí)間,提高了開(kāi)發(fā)效率。隨著基于WEB,采用N-層結(jié)構(gòu)的應(yīng)用開(kāi)發(fā)成為Java開(kāi)發(fā)人員主要從事的開(kāi)發(fā)任務(wù),Java開(kāi)發(fā)環(huán)境需要支持越來(lái)越多的技術(shù),比如,XML、 JSP、EJB和CORBA等,這就造成了Java IDEs的規(guī)模變得越來(lái)越大,許多Java開(kāi)發(fā)環(huán)境都集成了數(shù)據(jù)庫(kù)、JSP Server和AppServer,軟件的研究人員將上述IDEs不斷膨脹的現(xiàn)象稱為"IDEs大爆炸"。

"IDEs大爆炸"現(xiàn)象發(fā)生以后,有關(guān)Java開(kāi)發(fā)環(huán)境是走少而精的發(fā)展方向,還是走大而全的發(fā)展方向就成了廣大Java開(kāi)發(fā)人員關(guān)注的問(wèn)題。2001年Java開(kāi)發(fā)人員達(dá)到了200萬(wàn),成為每個(gè)軟件供應(yīng)商都無(wú)法忽視的力量,這一年JetBrains推出了Java開(kāi)發(fā)環(huán)境少而精的代表: IntelliJ IDEA。 IntelliJ IDEA明確的表示只做最好的Java代碼編輯器,不做什么文件都可以編寫(xiě)的編輯器。它關(guān)注Java開(kāi)發(fā)人員的工作實(shí)際并將這些工作進(jìn)行了優(yōu)化,比如編寫(xiě) try/catch語(yǔ)句結(jié)構(gòu)只需簡(jiǎn)單的點(diǎn)兩下鼠標(biāo)。IntelliJ IDEA提供的活動(dòng)模板可以擴(kuò)展公共代碼片斷,語(yǔ)法加亮及其各種各樣的快捷方式,使得開(kāi)發(fā)人員可以專注于問(wèn)題的解決。IntelliJ IDEA另一個(gè)特點(diǎn)是其編輯器具有重構(gòu)功能,可以進(jìn)行XP式的重構(gòu),適用于Java開(kāi)發(fā)人員的敏捷式開(kāi)發(fā)。由于減掉了一些可有可無(wú)的工具,所以價(jià)格上相對(duì)合理公道。當(dāng)年IntelliJ IDEA擊敗JBuilder成為最受Java開(kāi)發(fā)人員歡迎的Java開(kāi)發(fā)環(huán)境,即便是Martin Fowler這樣大師級(jí)的人物也喜歡使用IDEA,由此可見(jiàn)IDEA的優(yōu)秀程度。不過(guò)2002年隨著JBuilder將大而全的功力再提升一步,將UML 建模工具、JUnit測(cè)試框架以及Apache Struts等開(kāi)發(fā)工具集成進(jìn)來(lái),大而全的發(fā)展方向又一次受到Java開(kāi)發(fā)人員追捧。最全還是最好似乎使Java開(kāi)發(fā)人員在選擇Java 開(kāi)發(fā)環(huán)境時(shí)處于兩難狀況,但實(shí)際上當(dāng)Eclipse1.0發(fā)布時(shí),這個(gè)問(wèn)題已經(jīng)得到了初步的解決,最好和最全是可以兼顧的,而Eclipse1.0的發(fā)布也標(biāo)志著Java 開(kāi)發(fā)環(huán)境進(jìn)入XDEs時(shí)代。

Eclipse的出現(xiàn)不是從天上掉下來(lái)的,也不是某個(gè)天才拍腦袋想出來(lái)的,它是一群軟件精英們集體智慧的結(jié)果。早在1998年IBM就打算開(kāi)發(fā)新一代的工具平臺(tái)以便將它現(xiàn)有的各種開(kāi)發(fā)工具統(tǒng)一起來(lái),并減少開(kāi)發(fā)各種工具時(shí)重復(fù)的勞動(dòng),同時(shí)希望在新的平臺(tái)上建立新的Java開(kāi)發(fā)環(huán)境。經(jīng)過(guò)一段時(shí)間的準(zhǔn)備, IBM開(kāi)始建立起一個(gè)開(kāi)發(fā)團(tuán)隊(duì),人員構(gòu)成主要來(lái)自VisualAge for Java Micro Edition和VisualAge for Java兩個(gè)項(xiàng)目的開(kāi)發(fā)人員,選擇的標(biāo)準(zhǔn)是過(guò)去10年至少開(kāi)發(fā)過(guò)5到6個(gè)IDE。在開(kāi)發(fā)Eclispe的過(guò)程中,開(kāi)發(fā)人員借鑒了過(guò)去的成功經(jīng)驗(yàn),這包括:
  • ENVY/Smalltalk-增量編譯
  • Hoops-用戶可定制
  • VA/java-如何使開(kāi)發(fā)環(huán)境易于使用的經(jīng)驗(yàn)
  • Team/v-API先行
  • Sniff-如何處理 C++的經(jīng)驗(yàn)
  • VA/microED-Java 擴(kuò)展機(jī)制的架構(gòu)
特別是采用了Java 擴(kuò)展機(jī)制的架構(gòu)一條,使得Eclipse具有良好的可擴(kuò)展性,Java開(kāi)發(fā)環(huán)境進(jìn)入XDEs時(shí)代。不過(guò)軟件精英們先進(jìn)的思想要讓廣大的Java開(kāi)發(fā)人員所接受,還需要一個(gè)過(guò)程。為此IBM聯(lián)合了9家公司共同成立了一個(gè)開(kāi)源組織Eclipse基金會(huì),將Eclipse提供給開(kāi)發(fā)人員使用,并在開(kāi)源社區(qū)的幫助下進(jìn)一步完善Eclipse本身。Eclipse在最初設(shè)計(jì)時(shí),插件模型是靜態(tài)的,不能實(shí)現(xiàn)插件的即插即用功能,即便是大受歡迎的 Eclipse2.1也還是靜態(tài)的。所以到2004年發(fā)布Eclipse3.0時(shí),Eclipse進(jìn)行了重大改進(jìn),采用OSGi 的插件模型,初步實(shí)現(xiàn)了插件的即插即用功能,至此一個(gè)完美的、可擴(kuò)展的開(kāi)發(fā)環(huán)境展現(xiàn)在Java開(kāi)發(fā)者面前,這時(shí)Java開(kāi)發(fā)人員已經(jīng)達(dá)到300萬(wàn)。

Java開(kāi)發(fā)環(huán)境的現(xiàn)狀

2004年Eclipse3.0的發(fā)布極大刺激了Eclipse用戶的增長(zhǎng),據(jù)Evans Data Corporation的調(diào)查EMEA(Europe, Middle East 和 Africa )地區(qū)的Eclipse用戶增加了60%,亞太APAC(Asia Pacific)地區(qū)的Eclipse用戶增長(zhǎng)了70%,而北美地區(qū)的Eclipse用戶增加了90%。O‘REILLY2004年問(wèn)卷調(diào)查顯示使用 Eclipse的用戶竟然達(dá)到70%,但這顯然有感情因素在里頭。經(jīng)過(guò)一年以后,Java開(kāi)發(fā)人員現(xiàn)在使用Java開(kāi)發(fā)環(huán)境的狀況是如何的呢?看了下面的表格里的數(shù)據(jù)也許可以了解一個(gè)大致的狀況。

表1 2005年Java開(kāi)發(fā)人員使用Java開(kāi)發(fā)環(huán)境的狀況
來(lái)源
JSurfer網(wǎng)站
Servlets網(wǎng)站
CSDN網(wǎng)站
O‘Reilly網(wǎng)站
人數(shù)
2509
5592
1000
496
Eclipse 37.31%
42.18%
54.1%
35.6%
IntelliJ IDEA 24.91%
9.87%
6.5%
13.9%
NetBeans
10.48%
12.89%
3.9%
18.7%
JBuilder 6.94%
11.85%
30.7%

JDeveloper 1.79%
3.72%
0.9%

Websphere Studio App Developer
6%
2.4%

Emacs
4.98%
2.82%

5.8%
Vi/Vim

3.83%


Weblogic Workshop
0.87%
0.5%

Forte 1.24%



AnyJ 0.20%



CodeGuide 1.16%



Elixir IDE 1.39%



jEdit 7.25%



不使用IDE


7.6%

未使用Java



15.1%
其它
2.35%
5%
4.3%
10.6%

首先需要指明的是上述的數(shù)據(jù)并不是當(dāng)前Java用戶使用Java開(kāi)發(fā)環(huán)境的準(zhǔn)確反映,但我們可以從中了解一個(gè)大致的狀況?,F(xiàn)在的 Java環(huán)境可以分為三個(gè)集團(tuán),第一集團(tuán)是Eclispe它大約占據(jù)1/3的份額,第二集團(tuán)是 IntelliJ IDEA、NetBeans 和JBuilder占據(jù)另外1/3的份額,相互之間旗鼓相當(dāng),第三集團(tuán)是以JDeveloper和WSAD為代表的十幾種Java開(kāi)發(fā)環(huán)境占據(jù)剩下的 1/3份額,但每種開(kāi)發(fā)環(huán)境占總份額的比重不超過(guò)5%。我們考察Eclipse、intelliJ IDEA、NetBeans 和JBuilder這些主流開(kāi)發(fā)環(huán)境,可以發(fā)覺(jué)它們有一個(gè)共同的特點(diǎn)那就是可擴(kuò)展,盡管在實(shí)現(xiàn)手段上各有不同。這就是為什么稱現(xiàn)在的Java開(kāi)發(fā)環(huán)境為XDEs(eXtended Development Environments)的原因,IDEs已經(jīng)死亡了4年,專業(yè)的開(kāi)發(fā)人員需要了解這個(gè)事實(shí),因?yàn)閄DEs也快死了。

總的講20年來(lái)軟件工程的發(fā)展變化很小,現(xiàn)在許多為人所熟知的概念和方法都是在20年以前奠定下的基礎(chǔ)。盡管Gerald Weinberg等人要求特別關(guān)注軟件開(kāi)發(fā)中人的因素,但無(wú)論是過(guò)去的IDEs也好,還是現(xiàn)在的XDEs也罷,它們有一個(gè)共同的出發(fā)點(diǎn):僅僅注重提高個(gè)人的開(kāi)發(fā)效率?,F(xiàn)在的Java開(kāi)發(fā)環(huán)境,在如何提高個(gè)人開(kāi)發(fā)效率上做了許多工作,比如,增量編譯器、組件瀏覽器、可視化編輯器等,但是我們知道現(xiàn)在的Java開(kāi)發(fā)人員主要開(kāi)發(fā)復(fù)雜的N-層Web應(yīng)用,這需要知道多種編程語(yǔ)言、運(yùn)行平臺(tái)以及相關(guān)的各種組件和Web服務(wù)技術(shù),由于影響因素眾多,開(kāi)發(fā)人員很難單獨(dú)完成全部的工作。一般以Web應(yīng)用為核心的開(kāi)發(fā)團(tuán)隊(duì)常常包括項(xiàng)目經(jīng)理、測(cè)試工程師、網(wǎng)絡(luò)工程師,架構(gòu)師,軟件工程師和內(nèi)容編輯等角色,有些項(xiàng)目的人數(shù)會(huì)達(dá)到幾十甚至上百人,軟件開(kāi)發(fā)已經(jīng)成為一個(gè)集體項(xiàng)目,成員之間的合作與個(gè)人英雄同樣重要。

由于市場(chǎng)的壓力,一個(gè)軟件企業(yè)不僅要提高開(kāi)發(fā)人員個(gè)體的工作效率,還要提高整個(gè)開(kāi)發(fā)團(tuán)隊(duì)以及整個(gè)企業(yè)的開(kāi)發(fā)效率,但在現(xiàn)有的Java 開(kāi)發(fā)環(huán)境XDEs下無(wú)法完全做到這些,所以新一代開(kāi)發(fā)環(huán)境CDEs (Collaborative Development Environments)就產(chǎn)生。Grady Booch和Alan W. Brown的研究表明一個(gè)程序員一天工作時(shí)間的分配是這樣的:分析占16%  (從 5% 到 40%不等), 設(shè)計(jì)占14% (從 1% 到 40%不等),編程占16%  (從0% 到 60%不等), 測(cè)試占10% ,打電話占 3% ,閱讀占7% (電子郵件,文檔,月刊和雜志),參加開(kāi)發(fā)會(huì)議占 10% ,無(wú)關(guān)的會(huì)議占 7% 。從這些數(shù)據(jù)可以發(fā)現(xiàn),開(kāi)發(fā)人員用于交流的時(shí)間約占工作時(shí)間的1/3,開(kāi)發(fā)人員的相互交流非常重要??墒乾F(xiàn)有的主流Java開(kāi)發(fā)環(huán)境一般僅將分析、設(shè)計(jì)、編程和測(cè)試等工具集成進(jìn)來(lái),卻未包括用于交流的工具,這顯然不合理。因此,所謂CDEs就是將用于人與人、人與團(tuán)隊(duì)以及團(tuán)隊(duì)與團(tuán)隊(duì)進(jìn)行交流的工具集成進(jìn)來(lái)的開(kāi)發(fā)環(huán)境,比如,CDEs常具有發(fā)送電子郵件、進(jìn)行及時(shí)通訊和屏幕分享等功能,通過(guò)實(shí)現(xiàn)無(wú)損耗過(guò)程的交流提高開(kāi)發(fā)團(tuán)隊(duì)的開(kāi)發(fā)效率。

現(xiàn)在已經(jīng)商業(yè)化的 CDEs是CodeBeamer Collaborative Development Platform和CodePro AnalytiX,上述兩款軟件都提供Eclipse的插件,可以與Eclipse集成在一起,使Eclipse升級(jí)成為一個(gè)CDEs,從而提高Java 開(kāi)發(fā)人員的開(kāi)發(fā)效率,而Eclipse基金會(huì)開(kāi)展的兩個(gè)開(kāi)發(fā)項(xiàng)目 Stellation和 Koi都是希望Eclipse具有一定的協(xié)同功能。此外,GILD (Groupware-enabled Integrated Learning and Development)、Hipikat以及IBM的Jazz也是值得關(guān)注的研究項(xiàng)目。大家肯定知道Borland已經(jīng)宣布開(kāi)發(fā)基于Eclipse 的新版JBuilder-"Peloton",Peloton就是一個(gè)CDEs(Collaborative Development Environments),當(dāng)它明年上半年發(fā)布時(shí),就意味著Java開(kāi)發(fā)環(huán)境進(jìn)入CDEs時(shí)代,現(xiàn)在Java開(kāi)發(fā)環(huán)境還處于 XDEs與CDEs交替的階段。

Java開(kāi)發(fā)環(huán)境的未來(lái)

在可以看得見(jiàn)的將來(lái),Java的開(kāi)發(fā)環(huán)境還會(huì)是以CDEs的形式存在。開(kāi)源組織或開(kāi)發(fā)工具供應(yīng)商將會(huì)努力為軟件的開(kāi)發(fā)創(chuàng)建一個(gè)絕對(duì)光滑的平面 (frictionless surface),實(shí)現(xiàn)無(wú)損耗的開(kāi)發(fā)過(guò)程,以提高開(kāi)發(fā)效率。為了實(shí)現(xiàn)無(wú)損耗的開(kāi)發(fā)過(guò)程,Java的開(kāi)發(fā)環(huán)境將會(huì)關(guān)注以下幾個(gè)方面:
  • 起步階段方面
  • 協(xié)作開(kāi)發(fā)方面
  • 維護(hù)開(kāi)發(fā)團(tuán)隊(duì)有效溝通方面
  • 多個(gè)任務(wù)的時(shí)間協(xié)調(diào)方面
  • 相互協(xié)商方面
  • 資料有效性方面
上述6個(gè)方面是最容易出現(xiàn)損耗的地方,如果出現(xiàn)了損耗將會(huì)浪費(fèi)時(shí)間和金錢(qián),降低整個(gè)團(tuán)隊(duì)的開(kāi)發(fā)效率。比如,每個(gè)Java開(kāi)發(fā)人員都有這樣的經(jīng)歷,當(dāng)一個(gè)新的項(xiàng)目開(kāi)始時(shí),總要有一個(gè)了解的過(guò)程,而進(jìn)入新的開(kāi)發(fā)團(tuán)隊(duì)時(shí)也需要一個(gè)適應(yīng)過(guò)程,這些都叫起步損耗。在起步階段花費(fèi)的時(shí)間越少,起步損耗就越少,而開(kāi)發(fā)的效率就越高。所以減少6個(gè)方面的損耗相應(yīng)地就是提高了開(kāi)發(fā)效率,這就是CDEs比XDEs開(kāi)發(fā)效率更高的奧秘。未來(lái)的Java開(kāi)發(fā)環(huán)境也許具有下述功能:
  • 及時(shí)通訊功能
  • 舉辦網(wǎng)絡(luò)會(huì)議功能
  • 集中的信息管理功能
  • 應(yīng)用程序共享功能
  • 搜索與查詢功能
  • 屏幕共享功能
  • 任務(wù)列表功能
  • 文檔的流轉(zhuǎn)功能
  • 在線投票功能
  • 電子公告功能
  • 計(jì)劃與日歷功能
  • 時(shí)間提示功能
  • 工作流程安排功能
  • 電子郵件功能
  • ...
但這里必須承認(rèn)未來(lái)Java開(kāi)發(fā)環(huán)境是如何具體去實(shí)現(xiàn)無(wú)損耗的開(kāi)發(fā),還需要時(shí)間給予答案,因?yàn)楝F(xiàn)在所能采用的方法未必是最好的,比如,使用面向文件的 CVS進(jìn)行協(xié)同開(kāi)發(fā)就有需要改進(jìn)的地方。

總結(jié)

羅里羅唆一大堆,歸納起來(lái)不過(guò)就是:一個(gè)目的、三種手段以及一條規(guī)律。
一個(gè)目的:十年Java開(kāi)發(fā)環(huán)境的演變,其目的就是為了提高開(kāi)發(fā)效率。
三種手段:
  • 提高集成在Java 開(kāi)發(fā)環(huán)境中開(kāi)發(fā)工具的性能和易用性
  • 將Java開(kāi)發(fā)環(huán)境盡可能的覆蓋到整個(gè)軟件的開(kāi)發(fā)生命周期
  • 集成人與人、人與團(tuán)隊(duì)以及團(tuán)隊(duì)與團(tuán)隊(duì)進(jìn)行交流的工具
一條規(guī)律:軟件開(kāi)發(fā)環(huán)境的發(fā)展過(guò)程是從CLEs到IDEs再到XDEs最后進(jìn)入CDEs,這是由Grady Booch總結(jié)出來(lái)的,套在Java開(kāi)發(fā)環(huán)境上也適用。

參考文獻(xiàn)

1. Grady Booch and Alan W. Brown, "Collaborative Development Environments",  Advances in Computers 59, Aug. 2003.
2. Li-Te Cheng,Cleidson R. B. de Souza,Susanne Hupfer,John Patterson, Steven Ross, "Building Collaboration into IDEs", ACM Queue vol. 1, no. 9 - December/January 2003-2004
3. J. des Rivie` res,J. Wiegand, "Eclipse: A platform for integrating development tools", IBM System Journal,Volume 43, Number 2, 2004
4.The Java Extension Mechanism.
5. Grady Booch, "History of Development Environments", January 29, 2004

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多