Java 開發環境的過去、現在和將來
1995年3月23日,SanJose Mercury News登出一篇題為"WhySunthinksHotJavawillgiveyoualift"的文章,在那篇文章里預言Java技術將是下一個重大事件,這個預言現在看來并不僅僅是商家的宣傳伎倆,雖然文章是當時Sun的公關經理LisaPoulson安排撰寫的。從世人知道Ja
1995年3月23日,San Jose
Mercury News登出一篇題為"Why Sun thinks Hot Java will give you a lift"的文章,在那篇文章里預言Java技術將是下一個重大事件,這個預言現在看來并不僅僅是商家的宣傳伎倆,雖然文章是當時Sun的公關經理 Lisa Poulson安排撰寫的。從世人知道Java那一刻起到現在,算起來已經過去整整十年,回顧過去的十年值得總結的東西可以有許多,但在這里筆者只想就Java
開發環境談些個人的想法與朋友們交流一下。
現在的軟件開發人員在整個軟件的開發生命周期里,也許會根據需要使用各式各樣的開發工具來完成相對復雜的開發任務,而在幾十年以前,人們還只是使用文本編輯器、編譯器和De
bugger進行開發,對于這個階段的開發環境人們稱之為CLEs(Command Line Environments) 。而當人們發現如果將那些單獨分開的開發工具集成起來就可以有效的提高開發效率時,IDEs(Integrated Development Environments)就出現了。第一個IDEs也許可以追溯到1964年的Dartmouth Basic,盡管這有爭議,它是作為Dartmouth Time Sharing System的一部分,在John Kemeny 和 Thomas Kurtz指導下建立起來的,這套系統一直使用到1999年。盡管這40多年以來,開發人員的開發環境幾經變化、不斷進步,從早期的集成開發環境 IDEs到擴展開發環境XDEs(eXtended Development Environments)再到協同開發環境CDEs(Collaborative Development Environments),歷經了幾個不同的階段,但開發人員使用開發環境的目的始終就是一個:提高開發效率。Java的出現盡管只有十年,但其開發環境也大至經歷了從CLEs到IDEs再到XDEs這三個階段,現在即將進入CDEs階段。在上述Java開發環境發展過程中,有許多值得我們大家關注的地方。
Java開發環境的歷史回顧
縱觀過去十年Java開發環境的發展,大致可以粗略的劃分為如下幾個階段:
1995 命令行開發環境CLEs
1996 ? 2000 集成開發環境IDEs
2001 ? 2004 擴展開發環境XDEs
2005 - 協同開發環境CDEs
1995年,不平凡的一年,這一年Java 獲得了成功??闪钊藢擂蔚氖窃?995年并沒有一個令人滿意的Java開發環境,開發人員在進行Java編程時,大多使用文本編輯器編輯源程序,比如,Emacs、Vi、Notepad 等,然后再使用命令行的方式進行編譯處理。那時的Java開發環境還處于CLEs時代,開發效率非常低,這不能不說是Sun的一個失誤,但也預示著在Java開發工具上會有一番激烈的競爭。與Java世界即將開始的開發工具大戰不同,在Smalltalk世界里勝負結果似乎已經明朗,IBM的 Visual Age for Smalltalk、 ParcPlace的ObjectWorks和Digitalk的Visual Smalltalk三足鼎立的格局那時已經被打破,IBM的Visual Age for Smalltalk所占市場分額越來越大,而當時IBM進入Smalltalk市場僅有兩年多的時間。IBM之所以在很短的時間超越老牌的 Smalltalk 廠商ParcPlace和Digitalk,其中一個重要原因是IBM直接將其產品委托給一家由軟件精英組成的公司進行開發,這家公司就是由軟件開發大師級的人物Dave Thomas( Bedarra-Dave)創建的OTI( Object Technology International)公司。IBM在1993年進入Smalltalk市場的第一個產品ENVY/400就是OTI為其開發的,而其后包括 Visual Age for Smalltalk在內的多種產品開發OTI都參與了。為了抗衡IBM,ParcPlace和Digitalk兩家公司在Java誕生的那一年進行了合并,成立了名為ParcPlace-Digitalc的公司,但事后再看這次合并,不過是徒勞之舉罷了?,F在各廠家的Smalltalk 開發環境中都或多或少的內置了ENVY,而隨著IBM進軍Java開發工具市場,ENVY的相關技術也被從Smalltalk世界帶入到Java開發環境中。
1995年也是Smalltalk作為第5代編程語言從 Xerox Palo Alto研究中心走向市場的10周年,Dave Thomas為此寫了一篇題為"Ubiquitous Applications:Embedded Systems to Mainframe"的論文,作為Smalltalk市場化10周年的總結,文中介紹了Smalltalk是如何利用虛擬機實現從
嵌入式到大型機廣泛應用開發的,而那時Java世界的人們還在為Java虛擬機的拙劣
性能而苦惱,那時也許沒有人會想到現在Java的普及程度早已超越了Smalltalk。
有人稱1996年為互聯網年,有人卻稱之為Java年,還有人稱之為Web開發年,但不論如何稱呼1996年,它都反映了一個事實: Bill Joy將Java與互聯網相結合的策略取得了成功。這一年的9月Sun推出了其Java開發環境-Java WorkShop,這是一款基于瀏覽器的Java開發工具,但由于當時 Java在許多方面還不成熟,所以實際上Java WorkShop并不成功,同年發布的Sym
antec Visual Cafe由于還是采用C/C++語言進行開發,所以性能與成熟度上就比WorkShop好得多。提到Visual Cafe就不能不提Eugene Wang,因為Eugene Wang常常是與計算機間諜這個詞同時出現的人物,有人甚至講當時Symantec的老板Gordon Eubanks與Eugene Wang簽約時,也同時簽下了監獄里的一個單元。圍繞著Eugene Wang的間諜案發生的種種事情,將
Borland和Symantec兩家公司不為人知的陰暗面展現在公眾面前,對兩家公司的聲譽都帶來了損害。為避免雙方商業利益繼續遭受損失,最后這個間諜案以 Eugene Wang向法庭交納了一筆罰款而不了了之。Visual Cafe就是由Eugene Wang進行主要策劃的,它是在同一年發布的Java開發環境中,唯一解決了與
數據庫連接問題的開發環境,帶有一套可以與數據庫相連接的組件,無需太多編程使用拖拽的方式就可完成大部分工作,這一優點使得Visual Cafe受到了Java開發人員的歡迎。這一年IBM收購了OTI公司,從而得到了Dave Thomas的弟子John Duimovich、Dave Thomson、Mike Wilson等一大批軟件精英,這之中還包括"生活在技術刀鋒上的開發者"Brian Barry。
1997年,由于微軟壟斷案,使得微軟在Java開發環境上的努力受到了限制,Visual Cafe由于界面直觀易用,可以很容易地連接各種數據源等功能再次受到開發人員的歡迎。這一年IBM發布Visualage for Java,它是用Smalltalk編寫的吸收了許多ENVY的設計思想,比如,Visualage for Java是面向代碼庫的開發環境,它提供代碼庫和
項目管理以便于開發團隊在 C/S環境下進行項目開發。但由于大多數Java開發人員比較熟悉面向文件的開發環境,還不太習慣面向代碼庫的開發,再加上Visalage for Java對系統資源的要求比較高等因素,使得Visualage for Java一開始未被Java開發人員所認可。
1998年至2000年比較成功的Java開發環境是JBuilder,這是由于Borland較好的把握住 J2SE、J2EE和J2ME發布后,Java技術升級的時機,全面支持Java1.1和Java1.2開發平臺,它還提供了多種工具方便用戶從舊的平臺遷移到新的Java平臺。JBuilder本身80%是基于JDK1.2進行開發的,它支持JavaBeans, Enterprise JavaBeans, JDBC等方面的應用開發,可以連接多種關系數據庫。為支持分布式應用開發,JBuilder還集成了 VisiBroker ORB、JSP server、數據庫和EJB AppServer,并提供Open Tools API便于第三方工具集成。上述種種的優點使得JBuilder一舉超越Visual Cafe,成為當時最受歡迎的Java開發環境。在眾多Java開發環境中,1999年IBM發布的VisualAge for Java Micro Edition是比較有特色的開發環境,它是由Erich Gamma和與Erich Gamma有"焦不離孟、孟不離焦"之稱的John Wiegand共同進行設計的,采用了Java 擴展機制,并集成了
Junit測試框架,其當時所采用的架構深深地影響了后來Eclipse1.0所采用的架構。同時,通過 VisualAge for Java Micro Edition的開發,那些來自"未來世界"(Smalltalk們總認為他們來自計算機的未來世界)的軟件精英們,全面徹底地對 Java技術進行了評估,得出了許多結論性的東西,這之中包括現在鬧得沸沸揚揚的Swing和SWT對比。此外,Sun將其收購的NetBeans變成了
開源的Java IDE也是一件不大不小的事情。
縱觀1996年至2000年這五年時間里,隨著Java及其相關開發應用的發展,Java開發環境也不斷的完善,從CLEs進入到IDEs階段。為了提高Java開發人員的開發效率,Java開發環境主要從兩個方面進行改進與提高。一方面是提高集成在Java IDEs當中開發工具的性能和易用性,比如從最初的代碼編輯器、編譯器、Debugger等開發工具發展到增量編譯器、組件瀏覽器、自動編碼和用戶界面的可視化編輯器等,以此減少Java 開發人員輸入代碼的工作量、節省編譯時間,將Java 開發人員寶貴的時間花費在思考問題上而不是輸入代碼上。另一方面是將Java開發環境盡可能的覆蓋到整個軟件的開發生命周期,比如,將源代碼的
版本控制工具集成進Java IDEs當中,這樣做的好處是Java開發人員無需離開開發環境就可以完成大多數實際工作,節省進行不同工具之間的切換時間和適應這些工具的學習時間,提高了開發效率。隨著基于WEB,采用N-層結構的應用開發成為Java開發人員主要從事的開發任務,Java開發環境需要支持越來越多的技術,比如,XML、 JSP、EJB和CORBA等,這就造成了Java IDEs的規模變得越來越大,許多Java開發環境都集成了數據庫、JSP Server和AppServer,軟件的研究人員將上述IDEs不斷膨脹的現象稱為"IDEs大爆炸"。
"IDEs大爆炸"現象發生以后,有關Java開發環境是走少而精的發展方向,還是走大而全的發展方向就成了廣大Java開發人員關注的問題。2001年Java開發人員達到了200萬,成為每個軟件供應商都無法忽視的力量,這一年JetBrains推出了Java開發環境少而精的代表: IntelliJ IDEA。 IntelliJ IDEA明確的表示只做最好的Java代碼編輯器,不做什么文件都可以編寫的編輯器。它關注Java開發人員的工作實際并將這些工作進行了優化,比如編寫 try/catch語句結構只需簡單的點兩下鼠標。IntelliJ IDEA提供的活動模板可以擴展公共代碼片斷,語法加亮及其各種各樣的快捷方式,使得開發人員可以專注于問題的解決。IntelliJ IDEA另一個特點是其編輯器具有重構功能,可以進行
XP式的重構,適用于Java開發人員的
敏捷式開發。由于減掉了一些可有可無的工具,所以價格上相對合理公道。當年IntelliJ IDEA擊敗JBuilder成為最受Java開發人員歡迎的Java開發環境,即便是Martin Fowler這樣大師級的人物也喜歡使用IDEA,由此可見IDEA的優秀程度。不過2002年隨著JBuilder將大而全的功力再提升一步,將
UML 建模工具、JUnit測試框架以及Apache Struts等開發工具集成進來,大而全的發展方向又一次受到Java開發人員追捧。最全還是最好似乎使Java開發人員在選擇Java 開發環境時處于兩難狀況,但實際上當Eclipse1.0發布時,這個問題已經得到了初步的解決,最好和最全是可以兼顧的,而Eclipse1.0的發布也標志著Java 開發環境進入XDEs時代。
Eclipse的出現不是從天上掉下來的,也不是某個天才拍腦袋想出來的,它是一群軟件精英們集體智慧的結果。早在1998年IBM就打算開發新一代的工具平臺以便將它現有的各種開發工具統一起來,并減少開發各種工具時重復的勞動,同時希望在新的平臺上建立新的Java開發環境。經過一段時間的準備, IBM開始建立起一個開發團隊,人員構成主要來自VisualAge for Java Micro Edition和VisualAge for Java兩個項目的開發人員,選擇的標準是過去10年至少開發過5到6個IDE。在開發Eclispe的過程中,開發人員借鑒了過去的成功經驗,這包括:
ENVY/Smalltalk-增量編譯
Hoops-用戶可定制
VA/
java-如何使開發環境易于使用的經驗
Team/v-API先行
Sniff-如何處理 C++的經驗
VA/microED-Java 擴展機制的架構
特別是采用了Java 擴展機制的架構一條,使得Eclipse具有良好的可擴展性,Java開發環境進入XDEs時代。不過軟件精英們先進的思想要讓廣大的Java開發人員所接受,還需要一個過程。為此IBM聯合了9家公司共同成立了一個開源組織Eclipse基金會,將Eclipse提供給開發人員使用,并在開源社區的幫助下進一步完善Eclipse本身。Eclipse在最初設計時,插件模型是靜態的,不能實現插件的即插即用功能,即便是大受歡迎的 Eclipse2.1也還是靜態的。所以到2004年發布Eclipse3.0時,Eclipse進行了重大改進,采用OSGi 的插件模型,初步實現了插件的即插即用功能,至此一個完美的、可擴展的開發環境展現在Java開發者面前,這時Java開發人員已經達到300萬。
Java開發環境的現狀
2004年Eclipse3.0的發布極大刺激了Eclipse用戶的增長,據Evans Data Corporation的調查EMEA(Europe, Middle East 和 Africa )地區的Eclipse用戶增加了60%,亞太APAC(Asia Pacific)地區的Eclipse用戶增長了70%,而北美地區的Eclipse用戶增加了90%。O’REILLY2004年問卷調查顯示使用 Eclipse的用戶竟然達到70%,但這顯然有感情因素在里頭。經過一年以后,Java開發人員現在使用Java開發環境的狀況是如何的呢?看了下面的表格里的數據也許可以了解一個大致的狀況。
表1 2005年Java開發人員使用Java開發環境的狀況
來源
JSurfer網站
Servlets網站
CSDN網站
O’Reilly網站
人數
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%
首先需要指明的是上述的數據并不是當前Java用戶使用Java開發環境的準確反映,但我們可以從中了解一個大致的狀況?,F在的 Java環境可以分為三個集團,第一集團是Eclispe它大約占據1/3的份額,第二集團是 IntelliJ IDEA、NetBeans 和JBuilder占據另外1/3的份額,相互之間旗鼓相當,第三集團是以JDeveloper和WSAD為代表的十幾種Java開發環境占據剩下的 1/3份額,但每種開發環境占總份額的比重不超過5%。我們考察Eclipse、intelliJ IDEA、NetBeans 和JBuilder這些主流開發環境,可以發覺它們有一個共同的特點那就是可擴展,盡管在實現手段上各有不同。這就是為什么稱現在的Java開發環境為XDEs(eXtended Development Environments)的原因,IDEs已經死亡了4年,專業的開發人員需要了解這個事實,因為XDEs也快死了。
原文轉自:http://www.anti-gravitydesign.com