Java歷史回顧:開發(fā)人員十大問答
時(shí)到今日,Java已經(jīng)走過了 它輝煌的十幾年。我們邀請(qǐng)了世界各地的開發(fā)高手一同回顧Java語言發(fā)展的這十幾年,評(píng)析她今天所處的位置并預(yù)測(cè)其今后的發(fā)展趨勢(shì)。與會(huì)者(包括知名IT 企業(yè)Sun、IBM、BEA及Borland等)反映各異,但有一點(diǎn)是共同的——Java的地位將一如既往舉足輕重。
一、簡介
在過去的10幾年中,Java語言已經(jīng)變?yōu)橐粋€(gè)平臺(tái),一個(gè)社團(tuán)和一個(gè)生態(tài)系統(tǒng)。在這些環(huán)境下,軟件用戶、開源工程以及個(gè)體開發(fā)者等茁壯成長。今天,大約有四百五十萬Java開發(fā)者和大約1.4億臺(tái)設(shè)備上使用著Java。
我們不空談Java的成功故事。代替的是通過分發(fā)調(diào)查問卷(每發(fā)展一年提問一個(gè)問題)來搜集個(gè)人的Java使用經(jīng)驗(yàn),這些人大都是精于Java技術(shù)的開發(fā)者?;卮鹫甙ǜ鱾€(gè)層面的人,從咨詢師、作家到BEA、IBM、Sun等大公司的CTO和資深技術(shù)人員。
下面是一些我們收到的令人瞠目的回答。
1. 你是如何開始使用Java編程的?
Java吸引了每個(gè)人的注意,從程序開發(fā)人員到……
"當(dāng)Java還稱為Oak的時(shí)候我就用它進(jìn)行編程,大約是在1993年的下半年或者 是1994年的上半年。當(dāng)時(shí)我在Sun Labs率領(lǐng)一個(gè)研究小組。一旦我們使用Java開發(fā),我們就注意到使用Java的最大優(yōu)點(diǎn)是,它能以一種合理的安全的方式從一個(gè)虛擬機(jī)遷移到另一臺(tái)虛擬機(jī)。"這是Jim Waldo(SunLabs的杰出工程師)的回答。
Rod Smith,作為IBM軟件開發(fā)小組中處理突發(fā)技術(shù)的副主席,寫道:"我們看到了,Java平臺(tái)是一種足夠好的技術(shù),它具有在計(jì)算機(jī)工業(yè)界成為一支重大的 獨(dú)成系列的力量的潛力。我們認(rèn)為,我們最好要趕上這班時(shí)代列車并采納Sun的Java技術(shù)而不再依賴于以前的模式-自己開發(fā)每一件東西。"
Ed Cobb,BEA Systems公司CTO辦公室架構(gòu)標(biāo)準(zhǔn)的副主席,寫道:"我們可以選擇其它主流的面向?qū)ο笳Z言,但是Java提供了一種更好的組合特點(diǎn)使它適合于團(tuán)隊(duì)環(huán)境下的大規(guī)模開發(fā)。"
"在過去十年中的大部分時(shí)間里,我受雇于Sun。因此,我不得不說,Java"突然來到"我的身邊。如果不是這一突然性的到來,我們也會(huì)需要另外一種似Java的東西來叩開業(yè)界中正迅速發(fā)展的網(wǎng)絡(luò)計(jì)算環(huán)境的大門。"-Rob Gingell,Cassatt Corporation的執(zhí)行副主席和CTO。
...對(duì)那些勤奮的計(jì)算機(jī)系的大學(xué)生們...
Michael Pilone,作為Blueprint Technologies的資深軟件工程師,他的回答是:"當(dāng)時(shí)我盤算著我將來得找一份體面的工作,所以雖然我在大學(xué)中所學(xué)全部是C++,但是我還是另外自學(xué)了Java。"
"在我上碩士期間,我的指導(dǎo)教授讓我用Java工作,結(jié)果我用Java 1.0 beta版完成了我所有的功課。"-Raghu Donepudi,環(huán)球計(jì)算機(jī)公司的系統(tǒng)開發(fā)領(lǐng)導(dǎo)者。
...對(duì)那些熱衷于編程的狂熱者...
"我一畢業(yè)即用Java開始工作,我驚喜于Java的WORA的前景和Applets。"-Jack Herrington,作為Code Generation in Action (Manning)的作者和Code Generation Network的編輯。
"我甚至在1.0版本之前就開始學(xué)習(xí)Java了,因?yàn)槠溟_發(fā)目標(biāo)是作為微軟工具(VB和Visual C++)與Pascal語言的可選替代者",Laurent Ploix寫道,他是SunGard-Finance公司的工程總管和技術(shù)架構(gòu)師。
"在1997年,我?guī)е槐臼謨?cè)作為度假讀物,在海灘度假的日子里,我沉浸在 Java的優(yōu)美之中。我轉(zhuǎn)向了Java,并宣布C++是一種傳統(tǒng)的語言,并發(fā)誓一旦選擇了Java,永不回頭。"-Vlad Patryshev,Borland公司Java Business Unit的前任R&D工程師。
2.Java宣稱的"編寫一次,到處運(yùn)行"效果怎么樣(WORA)?一直以來,WORA的重要性改變了多少?
"Java虛擬機(jī),至少在概念上,是Java背后最強(qiáng)有力的思想。它的確實(shí)現(xiàn)了它許諾的輕便性。"-Bruce Tate,J2Life, LLC(一家Java技術(shù)咨詢公司)的主席。
"應(yīng)用服務(wù)器和J2EE應(yīng)用程序可以在多種平臺(tái)上良好地遷移。我認(rèn)為在客戶端上實(shí)現(xiàn)WORA還是相當(dāng)值得懷疑的,也許永遠(yuǎn)不會(huì)實(shí)現(xiàn)。"-Michael Pilone
"它對(duì)我簡直是一個(gè)不可捉摸的平臺(tái)。"-Vlad Patryshev
"Java的早期成功根本上在于WORA。與其它可選擇工具相比,Java帶給了(并將進(jìn)一步帶給)SI(系統(tǒng)集成商),ISV(獨(dú)立軟件開發(fā)商)和軟件工程師們一個(gè)根本不同的經(jīng)濟(jì)環(huán)境。"-Rod Smith
"Java在WORA方面的性能:a)比任何它之前的工具要好;b)就目前而言,與另外一些可選工具相比仍然要好得多;c)將作為Java價(jià)值的一個(gè)關(guān)鍵部分繼續(xù)保持下去。"-Rob Gingell
"WORA每次都帶給我極大的便利。我總是在Windows平臺(tái)上進(jìn)行我的Java開發(fā);但是,我總是毫不費(fèi)勁地把這些代碼發(fā)布到Solaris 或者Linux 環(huán)境中去。"-Eric Bruno,一個(gè)獨(dú)立的咨詢師,擅長于軟件架構(gòu),企業(yè)Java和C++開發(fā)。
"你可以把字節(jié)代碼轉(zhuǎn)換成MSIL(MS中間語言),而且你可以在J#中運(yùn)行Java程序。這使我們可以針對(duì)我們產(chǎn)品的Java和.net環(huán)境只保留一份代碼即可。"-Michael R. Smialek,Knowledge Dynamics的主席和CEO
"我經(jīng)??鏦indows,Linux和Sun Solaris開發(fā),測(cè)試和發(fā)布Java代碼,而僅需對(duì)XML配置文件作較少的改動(dòng)。但是,隨著面向服務(wù)的結(jié)構(gòu)的出現(xiàn),WORA的重要性已經(jīng)減弱了。"-Kyle Gabhart,作家和獨(dú)立咨詢師
"象Perl,Ruby和Python等語言一樣輕便。"-Jack Herrington
"一些人認(rèn)為,由于通用操作系統(tǒng)的數(shù)目的下降,WORA將變得不再如以前那么重要。事實(shí)上,即使只有兩種合理的可能的目標(biāo)平臺(tái)存在,WORA就一直是重要的。"-Ed Cobb
二、客戶端Java及開發(fā)工具選擇
3.你用Java編寫過多少代碼?估計(jì)你將來的工作有多少會(huì)用Java實(shí)現(xiàn)?
幾乎所的的回答者聲稱Java是他們主要的產(chǎn)品編碼工具,大多數(shù)人選擇他們的Java使用率超過70%。沒有人認(rèn)為他們下一步的Java開發(fā)使用率會(huì)降低。
"去年,我們利用Java 技術(shù)開發(fā)出了800多個(gè)商業(yè)產(chǎn)品。幾乎我們所有的中間件都依賴于Java運(yùn)行時(shí)刻庫。"-IBM的Rod Smith
"在我們的顧客中,我們?nèi)钥吹骄哂锌梢灶A(yù)料的潛在需求的大量C/C++功能第一型的應(yīng)用程序。他們經(jīng)常愿意用Java進(jìn)行開發(fā),而Java虛擬機(jī)技術(shù)目前正發(fā)展到正好能夠處理這些類型系統(tǒng)的時(shí)候。
在Web應(yīng)用程序開發(fā)中,我想,當(dāng)人們的應(yīng)用程序變得越來越大且越復(fù)雜時(shí),我們將看 到針對(duì)動(dòng)態(tài)類型語言會(huì)出現(xiàn)一點(diǎn)后推力作用。他們將經(jīng)受運(yùn)行時(shí)刻類型異常--事實(shí)上,他們?cè)缫颜J(rèn)識(shí)到,如果采用象Java一樣的強(qiáng)類型語言的話,這是可以避 免的。"-BEA公司的Ed Cobb
4.你用Java開發(fā)桌面應(yīng)用和服務(wù)器應(yīng)用的比例為多少?如果你開發(fā)過桌面應(yīng)用程序,你更喜歡用SWT還是Swing,為什么?
Bruce Tate對(duì)這一問題的回答總結(jié)了所有其他人的觀點(diǎn):"服務(wù)器端Java正是它應(yīng)有的位置。"
至于,客戶端Java開發(fā),眾說紛紜...
"Swing太復(fù)雜,太不可預(yù)測(cè),太難學(xué)。SWT則好一些,但一般而言,Java在用戶接口設(shè)計(jì)上很不成功。"-Tate,《Better, Faster, Lighter Java》和《Bitter Java》的作者
"我認(rèn)為SWT有更好的方法,它鏈接到本地lib庫文件以達(dá)到加快速度和一致性的目的,但是我并不喜歡這些API,因?yàn)樗鼈儽┞冻鎏嗟睦鲜降木幋a技術(shù)。相比之下,Swing有一個(gè)更好些的API,但是其中充滿錯(cuò)誤、性能低下且設(shè)計(jì)糟糕。"-Michael Pilone
"我更喜歡SWT...它比Swing更具本地化,Swing而可以說只是粗略地實(shí)現(xiàn)了本地化。"-Ed Cobb
"我寫Swing應(yīng)用程序,然后使用Java Web Start來進(jìn)行發(fā)布。我還沒有出賣過我的SWT型程序,因?yàn)樗鼉H有有限的跨平臺(tái)支持并缺乏可靠的MVC設(shè)計(jì)。"-Kyle Gabhart
5.你使用的Java開發(fā)環(huán)境是什么?
很明顯,當(dāng)前流行的Eclipse框架和集成開發(fā)環(huán)境是大多數(shù)對(duì)這一問題的回答,因?yàn)槠涫荳indows和Linux平臺(tái)的主流環(huán)境。只有另外少數(shù)的回答者指定了其它幾個(gè)選擇:
"我選擇的平臺(tái)是WinXP Pro。在安裝了Cygwin和另外幾個(gè)開發(fā)工具后,你就可以得到一個(gè)具有硬件支持的非常有用的系統(tǒng)了。"-Michael Pilone
"我特別喜歡J2SE 5。說到IDE,我更喜歡JBuilder,其次是IDEA。IDEA中有一些巧妙的實(shí)現(xiàn),但是良好的經(jīng)典的Jbuilder具有我需要的任何東西。"-Vlad Patryshev
"我一直使用emacs開發(fā)而用println進(jìn)行調(diào)試。最近我在使用NetBeans,已驚奇于它給我?guī)淼木薮髱椭?-Jim Waldo
"請(qǐng)不要使用EJB!"-Laurent Ploix
"Visual Café。"-Smialek
"在必要的時(shí)候,我都使用vi進(jìn)行開發(fā)。"-Kyle Gabhart
#p#
三、開源,JCP和對(duì)Java的希望列舉
6.JCP和開源社群誰在Java更新上的貢獻(xiàn)更大?
"到目前為止,應(yīng)該說是開源的貢獻(xiàn)更大。而JCP在進(jìn)行實(shí)際的開發(fā)實(shí)踐之前,推崇標(biāo) 準(zhǔn)化的作用。EJB,日志以及持久性一直是JCP中的災(zāi)難。實(shí)際上JCP在拋棄著Java的根基。很難的問題在拐彎抹角變得易于解決,而容易的問題反而在 變得越來越難于解決了。"-Bruce Tate
"開放源碼的執(zhí)行領(lǐng)導(dǎo)著開發(fā)過程,而JCP僅僅是定義了一些標(biāo)準(zhǔn)。"-Laurent Ploix
"如果說純粹的革新,我將選擇開源。當(dāng)工程中存在漏洞需要補(bǔ)全時(shí),開源是能夠迅速得到響應(yīng)的。而JCP目前是一種太慢的方式,以至于根本跟不上工業(yè)發(fā)展的步伐。"-Michael Pilone
"多數(shù)的革新經(jīng)歷了JCP模式。但是,在過去的幾年中,我們看到了在開源模式中的活動(dòng)不斷增加的跡象。"-Rod Smith (IBM)
"為使得開源運(yùn)動(dòng)進(jìn)行下去,JCP值得廣泛的信任,它對(duì)于Java生態(tài)系統(tǒng)的發(fā)展起 到提供一個(gè)群落中心的作用。任何一些非JCP標(biāo)準(zhǔn)的開源工程已經(jīng)探索了各式各樣的思想-一些是糟糕的,一些卻取得了令人驚喜的成績。JCP可以說是一場偉 大的創(chuàng)新運(yùn)動(dòng)的火車頭。"-Ed Cobb (BEA)
"JCP本身僅僅是定義了一些標(biāo)準(zhǔn)及相應(yīng)的說明書,這在已有的工程實(shí)現(xiàn)中被得到支 持。作為編程者,我們不想根據(jù)一段現(xiàn)成的Java編碼來指導(dǎo)我們編程,而要根據(jù)一套成熟的說明書進(jìn)行開發(fā)。真正有用的編程最開始往往是零碎的代碼片斷,經(jīng) 常經(jīng)歷一個(gè)先有代碼然后有規(guī)范的說明書的過程。"-Rob Gingell
"我找到了開源的主動(dòng)性,特別是從Apache到當(dāng)前最具創(chuàng)新性的有用的軟件中找到的。"-Eric Bruno
7.Sun應(yīng)該開放Java的源代碼嗎?
你知道這個(gè)問題肯定會(huì)出現(xiàn)在問卷之中的。
"這一點(diǎn)并不重要。Java在走自己路的過程中,自身已經(jīng)建設(shè)得足夠強(qiáng)大。"-Bruce Tate
"如果Sun在做這樣一件有益的工作,為什么要打擾他呢?"-Raghu Donepudi
"不應(yīng)該。如果它實(shí)現(xiàn)開源,那么我們能夠看到Java的許多技巧,這最終將導(dǎo)致一些問題的出現(xiàn),例如我們現(xiàn)在使用應(yīng)用程序服務(wù)器時(shí)所遇到的問題。"-Rahul Kumar Gupta
"是的。Sun拒絕這樣做的唯一原因就是,Java完全是他們自己的產(chǎn)品,他們使用它來使自己的公司得以維持下去。"-Jack Herrington
"一方面,開源的思想是很有吸引力的,因?yàn)樗鼘?dǎo)致更多的錯(cuò)誤在很短的時(shí)間內(nèi)就得以修改。另一方面,它可能導(dǎo)致分支分派的不匹配的JAVA虛擬機(jī)的出現(xiàn)。"-Michael Pilone
"不。我不相信一群普普通通的所謂天才人物就能取代那些負(fù)責(zé)管理極為健全的基本概念的大家們的科學(xué)思想-其中的大多數(shù)人甚至還不能明白這個(gè)問題。"-Vlad Patryshev
"開源社團(tuán)的加入將會(huì)加速創(chuàng)新并推動(dòng)該平臺(tái)的競爭性。"-Rod Smith(IBM)
"我們需要一個(gè)開源Java的主要原因是確保該平臺(tái)的生命力。如果將來Sun公司發(fā)生什么事情的話,開源的Java將列入我們的保險(xiǎn)計(jì)劃中。"-Ed Cobb(BEA)
"我認(rèn)為是應(yīng)該的。’開源’Java并不要求Sun做什么事情,它只是要求另外一些公司或個(gè)人做一些事情?!_源’Java是不可避免的。我建議Sun積極地實(shí)現(xiàn)這一不可避免并為此帶來的益處做一些工作。"-Rob Gingell
"我對(duì)此并不關(guān)心"-Kyle Gabhart
8.你希望Java有怎樣的改進(jìn)?
"從較低層次上,Java需要代碼的模塊化,擴(kuò)展和一個(gè)更具動(dòng)態(tài)化的模型,以及還需要增加很多的功能以使得應(yīng)用程序開發(fā)更為容易,因?yàn)槟悴豢赡軆H僅利用庫來實(shí)現(xiàn)一切。"-Bruce Tate
"內(nèi)省機(jī)制(用一個(gè)類來分析JavaBean的特性)使用起來太難且過于繁重。"-Laurent Ploix
"需要加入代碼使用許可證機(jī)制。"-Greg Magnusson,Cyborg Spiders的Web技術(shù)開發(fā)的奠基者
"應(yīng)該提供由開發(fā)者來進(jìn)行內(nèi)存管理的功能。"-Raghu Donepudi
"應(yīng)該加入運(yùn)算符重載功能。"-Jack Herrington
"目前迫切需要在Java中加入Jar版本機(jī)制。我記不清有多少次遇到XML分析庫沖突或者日志庫沖突了。"-Michael Pilone
"類對(duì)象。十年了,沒有任何改變。有大量的類對(duì)象需要加上去。"-Vlad Patryshev
"Java平臺(tái)目前已經(jīng)變得過于復(fù)雜。我們認(rèn)為Java社團(tuán)需要做出更好的工作來滿足獨(dú)立的和中小型的商業(yè)需要,這也是為了Java繼續(xù)發(fā)展、繁榮和成功的目的。"-Rod Smith(IBM)
"Java非常需要一個(gè)更為強(qiáng)壯的模塊化的系統(tǒng)。當(dāng)前,我們所擁有的是一些.jar文件,其結(jié)果是成了’.jar文件地獄’。但是今天還很難描述一個(gè)互有聯(lián)系的模塊化的系統(tǒng)。"-Ed Cobb
"我原先希望Java能夠?qū)崿F(xiàn)的,過去的Java并沒有做到:關(guān)于日期和時(shí)間問題上有好幾處從一開始就是錯(cuò)誤的;RMI/IIOP的引入在理論上是正確的但完全沒有必要;它自一開始就是自我封閉的。"-Rob Gingell
"對(duì)于類的加載和對(duì)象的Java運(yùn)行時(shí)刻類型的關(guān)系的處理是一個(gè)錯(cuò)誤,現(xiàn)在我們還在為之付出代價(jià)。你不可能真正確定出是否你的程序在編譯時(shí)刻是類型安全的。而且,如果你在做適當(dāng)動(dòng)態(tài)的任何操作,你經(jīng)常需要對(duì)一個(gè)給定類的正確加載作出猜測(cè)分析。"-Jim Waldo
"垃圾回收簡直是個(gè)噩夢(mèng)。它有可能使得沒有經(jīng)過良好訓(xùn)練的,懶散的編程人員進(jìn)入到這個(gè)工業(yè)領(lǐng)域中。"
"Java需要增加的另外一些功能有:操作符重載;預(yù)編譯指令(#define,等等);把聲明與定義(頭文件和源文件)相分離的能力;唯一的、非本機(jī)的機(jī)器標(biāo)志符(用于認(rèn)證之目的)。"-Michael Smialek
"迫切需要加入Code-Behind(頁面代碼分離)技術(shù)?。?!ASP.net和頁面代碼分離技術(shù)所帶來的重用性與靈活性是巨大的。我希望JSP 3.0能夠朝這個(gè)方向發(fā)展。"-Kyle Gabhart
"我更愿意使用Java對(duì)象來存取操作系統(tǒng)而不是用JNI(Java本機(jī)接口),因?yàn)榇蠖鄶?shù)的Win32/Linux API都包含在Java中了。"-Alexi Jordanov,OSGi技術(shù)公司ProSyst Bulgaria的項(xiàng)目領(lǐng)導(dǎo)者
四、Java帶給人們的最偉大的禮物與Java的未來
9.Java對(duì)軟件社群最大的貢獻(xiàn)是什么?
我們收到的大部分反映結(jié)果認(rèn)為是平臺(tái)獨(dú)立性,Java平臺(tái)和該語言本身的創(chuàng)建以及他們創(chuàng)建的各種社團(tuán)。
"有兩點(diǎn):它使得更廣泛的用戶群可以接受垃圾收集語言;圍繞該語言涌現(xiàn)出了各種集成開發(fā)環(huán)境。"-Jack Herrington
"Java真正地震撼了許多東西,這包括迫使微軟設(shè)計(jì)出新的產(chǎn)品,諸如Visual Studio的進(jìn)一步改進(jìn)和.NET產(chǎn)品的出現(xiàn)等。由于Netscape選擇了Java,這使得客戶瀏覽器能夠執(zhí)行JavaScript。它使當(dāng)今世界服 務(wù)器端開發(fā)也邁出了巨大的一步,受此技術(shù)影響的站點(diǎn)數(shù)以百萬計(jì)。"-Michael Pilone
"數(shù)百萬的學(xué)生不需要學(xué)習(xí)C++。"-Rob Gingell
"能使多家廠商貫徹實(shí)施的標(biāo)準(zhǔn)化API的建立。很多廠家競相提供該標(biāo)準(zhǔn)化接口的最好實(shí)現(xiàn),這給業(yè)界創(chuàng)造高質(zhì)量的解決方案帶來了強(qiáng)大發(fā)展動(dòng)力。"-Kyle Gabhart
".NET"-Michael Smialek
10.Java的未來會(huì)如何?
"任何一種語言總是存在其有限的技術(shù)領(lǐng)先周期,Java也不例外。在某種意義上看,能超過Java技術(shù)會(huì)是一種非常有趣的事情。" - Bruce Tate
"當(dāng)桌面和膝上電腦要被手持設(shè)備取代時(shí),我們可能需要一種更簡單的更強(qiáng)有力的語言。"-Raghu Donepudi
"C#具有擠垮Java的潛力,它是一種更好的語言。"-Jack Herrington
"微軟在通過.NET以一種令人難以置信的速度發(fā)展。由于擁有Windows操作系統(tǒng)的大量客戶端用戶,所以他們比Java具有更大的優(yōu)勢(shì)。"-Michael Pilone
"在一些新技術(shù)被編程世界接受之前,至少要經(jīng)過幾年的時(shí)間。例如,看起來不超過5%的Java程序員能掌握J(rèn)ava泛型編程。請(qǐng)問,又有多少人可以掌握Lock/Condition?"-Vladimir Patryshev
"當(dāng)技術(shù)朝著圍繞交互性的結(jié)構(gòu)化(如面向服務(wù)的結(jié)構(gòu)化)方向發(fā)展的時(shí)候,Java語言將繼續(xù)作為一種語言在計(jì)算機(jī)工業(yè)發(fā)展中占有重要地位。"-Rod Smith
"在某種意義上看,Java 虛擬機(jī)體系所要求的限制可能有點(diǎn)太嚴(yán)肅了。但是,任何一種新的挑戰(zhàn)者虛擬機(jī)登上舞臺(tái)并用之取代Java平臺(tái)都是一件很好的事情。"-Ed Cobb
"實(shí)際上我們可以開發(fā)出許多種不同的語言,其中一些可能與我們熟知的Java根本不同,但是仍舊保持應(yīng)用程序二進(jìn)制接口(ABI)。這是為什么Java將會(huì)保持長時(shí)期的重要性的原因。"-Rob Gingell
"Java將繼續(xù)作為一股巨大的力量存在于IT業(yè)中,但是一些瞄準(zhǔn)市場的腳本語言將會(huì)在某些行業(yè)中進(jìn)一步發(fā)展壯大。"-Doug Tillman,Grainger.com站點(diǎn)Java和Python技術(shù)的開發(fā)者
"任何一個(gè)人,只要他在該界業(yè)干過多年,都不會(huì)相信,存在一種技術(shù)會(huì)對(duì)要推翻自己的更新、更快或者更有效的技術(shù)產(chǎn)生免疫力。"-Kyle Gabhart
【編輯推薦】