我們邀請了世界各地的開發(fā)高手一同回顧Java語言發(fā)展的第一個十年,評析她今天所處的位置并預測其今后的發(fā)展趨勢。與會者(包括知名IT企業(yè)Sun、IBM、BEA及Borland等)反映各異,但有一點是共同的——Java的地位將一如既往舉足輕重。
一、簡介
到2005年5月標記著自從Sun第一個引入Java技術以來經(jīng)歷了整整10個年頭。在過去的10年中,Java語言已經(jīng)變?yōu)橐粋€平臺,一個社團和一個生態(tài)系統(tǒng)。在這些環(huán)境下,軟件用戶、開源工程以及個體開發(fā)者等茁壯成長。今天,大約有四百五十萬Java開發(fā)者和大約1.4億臺設備上使用著Java。
我們不空談Java的成功故事。代替的是通過分發(fā)調查問卷(每發(fā)展一年提問一個問題)來搜集個人的Java使用經(jīng)驗,這些人大都是精于Java技術的開發(fā)者。回答者包括各個層面的人,從咨詢師、作家到BEA、IBM、Sun等大公司的CTO和資深技術人員。
下面是一些我們收到的令人瞠目的回答。
1. 你是如何開始使用Java編程的?
Java吸引了每個人的注意,從程序開發(fā)人員到……
"當Java還稱為Oak的時候我就用它進行編程,大約是在1993年的下半年或者是1994年的上半年。當時我在Sun Labs率領一個研究小組。一旦我們使用Java開發(fā),我們就注意到使用Java的最大優(yōu)點是,它能以一種合理的安全的方式從一個虛擬機遷移到另一臺虛擬機。",這是Jim Waldo(SunLabs的杰出工程師)的回答。
Rod Smith,作為IBM軟件開發(fā)小組中處理突發(fā)技術的副主席,寫道:"我們看到了,Java平臺是一種足夠好的技術,它具有在計算機工業(yè)界成為一支重大的獨成系列的力量的潛力。我們認為,我們最好要趕上這班時代列車并采納Sun的Java技術而不再依賴于以前的模式-自己開發(fā)每一件東西。"
Ed Cobb,BEA Systems公司CTO辦公室架構標準的副主席,寫道:"我們可以選擇其它主流的面向對象語言,但是Java提供了一種更好的組合特點使它適合于團隊環(huán)境下的大規(guī)模開發(fā)。"
"在過去十年中的大部分時間里,我受雇于Sun。因此,我不得不說,Java"突然來到"我的身邊。如果不是這一突然性的到來,我們也會需要另外一種似Java的東西來叩開業(yè)界中正迅速發(fā)展的網(wǎng)絡計算環(huán)境的大門。"-Rob Gingell,Cassatt Corporation的執(zhí)行副主席和CTO。
...對那些勤奮的計算機系的大學生們...
Michael Pilone,作為Blueprint Technologies的資深軟件工程師,他的回答是:"當時我盤算著我將來得找一份體面的工作,所以雖然我在大學中所學全部是C++,但是我還是另外自學了Java。"
"在我上碩士期間,我的指導教授讓我用Java工作,結果我用Java 1.0 beta版完成了我所有的功課。"-Raghu Donepudi,環(huán)球計算機公司的系統(tǒng)開發(fā)領導者。
...對那些熱衷于編程的狂熱者...
"我一畢業(yè)即用Java開始工作,我驚喜于Java的WORA的前景和Applets。"-Jack Herrington,作為Code Generation in Action (Manning)的作者和Code Generation Network的編輯。
"我甚至在1.0版本之前就開始學習Java了,因為其開發(fā)目標是作為微軟工具(VB和Visual C++)與Pascal語言的可選替代者",Laurent Ploix寫道,他是SunGard-Finance公司的工程總管和技術架構師。
"在1997年,我?guī)е槐臼謨宰鳛槎燃僮x物,在海灘度假的日子里,我沉浸在Java的優(yōu)美之中。我轉向了Java,并宣布C++是一種傳統(tǒng)的語言,并發(fā)誓一旦選擇了Java,永不回頭。"-Vlad Patryshev,Borland公司Java Business Unit的前任R&D工程師。
2.Java宣稱的"編寫一次,到處運行"效果怎么樣(WORA)?一直以來,WORA的重要性改變了多少?
"Java虛擬機,至少在概念上,是Java背后最強有力的思想。它的確實現(xiàn)了它許諾的輕便性。"-Bruce Tate,J2Life, LLC(一家Java技術咨詢公司)的主席。
"應用服務器和J2EE應用程序可以在多種平臺上良好地遷移。我認為在客戶端上實現(xiàn)WORA還是相當值得懷疑的,也許永遠不會實現(xiàn)。"-Michael Pilone
"它對我簡直是一個不可捉摸的平臺。"-Vlad Patryshev
"Java的早期成功根本上在于WORA。與其它可選擇工具相比,Java帶給了(并將進一步帶給)SI(系統(tǒng)集成商),ISV(獨立軟件開發(fā)商)和軟件工程師們一個根本不同的經(jīng)濟環(huán)境。"-Rod Smith
"Java在WORA方面的性能:a)比任何它之前的工具要好;b)就目前而言,與另外一些可選工具相比仍然要好得多;c)將作為Java價值的一個關鍵部分繼續(xù)保持下去。"-Rob Gingell
"WORA每次都帶給我極大的便利。我總是在Windows平臺上進行我的Java開發(fā);但是,我總是毫不費勁地把這些代碼發(fā)布到Solaris 或者Linux 環(huán)境中去。"-Eric Bruno,一個獨立的咨詢師,擅長于軟件架構,企業(yè)Java和C++開發(fā)。
"你可以把字節(jié)代碼轉換成MSIL(MS中間語言),而且你可以在J#中運行Java程序。這使我們可以針對我們產(chǎn)品的Java和.NET環(huán)境只保留一份代碼即可。"-Michael R. Smialek,Knowledge Dynamics的主席和CEO
"我經(jīng)常跨Windows,Linux和Sun Solaris開發(fā),測試和發(fā)布Java代碼,而僅需對XML配置文件作較少的改動。但是,隨著面向服務的結構的出現(xiàn),WORA的重要性已經(jīng)減弱了。"-Kyle Gabhart,作家和獨立咨詢師
"像Perl,Ruby和Python等語言一樣輕便。"-Jack Herrington
"一些人認為,由于通用操作系統(tǒng)的數(shù)目的下降,WORA將變得不再如以前那么重要。事實上,即使只有兩種合理的可能的目標平臺存在,WORA就一直是重要的。"-Ed Cobb
二、客戶端Java及開發(fā)工具選擇
3.你用Java編寫過多少代碼?估計你將來的工作有多少會用Java實現(xiàn)?
幾乎所的的回答者聲稱Java是他們主要的產(chǎn)品編碼工具,大多數(shù)人選擇他們的Java使用率超過70%。沒有人認為他們下一步的Java開發(fā)使用率會降低。
"去年,我們利用Java 技術開發(fā)出了800多個商業(yè)產(chǎn)品。幾乎我們所有的中間件都依賴于Java運行時刻庫。"-IBM的Rod Smith
"在我們的顧客中,我們仍看到具有可以預料的潛在需求的大量C/C++功能第一型的應用程序。他們經(jīng)常愿意用Java進行開發(fā),而Java虛擬機技術目前正發(fā)展到正好能夠處理這些類型系統(tǒng)的時候。
在Web應用程序開發(fā)中,我想,當人們的應用程序變得越來越大且越復雜時,我們將看到針對動態(tài)類型語言會出現(xiàn)一點后推力作用。他們將經(jīng)受運行時刻類型異常--事實上,他們早已認識到,如果采用象Java一樣的強類型語言的話,這是可以避免的。"-BEA公司的Ed Cobb
4.你用Java開發(fā)桌面應用和服務器應用的比例為多少?如果你開發(fā)過桌面應用程序,你更喜歡用SWT還是Swing,為什么?
Bruce Tate對這一問題的回答總結了所有其他人的觀點:"服務器端Java正是它應有的位置。"
至于,客戶端Java開發(fā),眾說紛紜...
"Swing太復雜,太不可預測,太難學。SWT則好一些,但一般而言,Java在用戶接口設計上很不成功。"-Tate,《Better, Faster, Lighter Java》和《Bitter Java》的作者
"我認為SWT有更好的方法,它鏈接到本地lib庫文件以達到加快速度和一致性的目的,但是我并不喜歡這些API,因為它們暴露出太多的老式的編碼技術。相比之下,Swing有一個更好些的API,但是其中充滿錯誤、性能低下且設計糟糕。"-Michael Pilone
"我更喜歡SWT...它比Swing更具本地化,Swing而可以說只是粗略地實現(xiàn)了本地化。"-Ed Cobb
"我寫Swing應用程序,然后使用Java Web Start來進行發(fā)布。我還沒有出賣過我的SWT型程序,因為它僅有有限的跨平臺支持并缺乏可靠的MVC設計。"-Kyle Gabhart
5.你使用的Java開發(fā)環(huán)境是什么?
很明顯,當前流行的Eclipse框架和集成開發(fā)環(huán)境是大多數(shù)對這一問題的回答,因為其是Windows和Linux平臺的主流環(huán)境。只有另外少數(shù)的回答者指定了其它幾個選擇:
"我選擇的平臺是WinXP Pro。在安裝了Cygwin和另外幾個開發(fā)工具后,你就可以得到一個具有硬件支持的非常有用的系統(tǒng)了。"-Michael Pilone
"我特別喜歡J2SE 5。說到IDE,我更喜歡Jbuilder,其次是IDEA。IDEA中有一些巧妙的實現(xiàn),但是良好的經(jīng)典的Jbuilder具有我需要的任何東西。"-Vlad Patryshev
"我一直使用emacs開發(fā)而用println進行調試。最近我在使用NetBeans,已驚奇于它給我?guī)淼木薮髱椭?-Jim Waldo
"請不要使用EJB!"-Laurent Ploix
"Visual Café。"-Smialek
"在必要的時候,我都使用vi進行開發(fā)。"-Kyle Gabhart
一、簡介
到2005年5月標記著自從Sun第一個引入Java技術以來經(jīng)歷了整整10個年頭。在過去的10年中,Java語言已經(jīng)變?yōu)橐粋€平臺,一個社團和一個生態(tài)系統(tǒng)。在這些環(huán)境下,軟件用戶、開源工程以及個體開發(fā)者等茁壯成長。今天,大約有四百五十萬Java開發(fā)者和大約1.4億臺設備上使用著Java。
我們不空談Java的成功故事。代替的是通過分發(fā)調查問卷(每發(fā)展一年提問一個問題)來搜集個人的Java使用經(jīng)驗,這些人大都是精于Java技術的開發(fā)者。回答者包括各個層面的人,從咨詢師、作家到BEA、IBM、Sun等大公司的CTO和資深技術人員。
下面是一些我們收到的令人瞠目的回答。
1. 你是如何開始使用Java編程的?
Java吸引了每個人的注意,從程序開發(fā)人員到……
"當Java還稱為Oak的時候我就用它進行編程,大約是在1993年的下半年或者是1994年的上半年。當時我在Sun Labs率領一個研究小組。一旦我們使用Java開發(fā),我們就注意到使用Java的最大優(yōu)點是,它能以一種合理的安全的方式從一個虛擬機遷移到另一臺虛擬機。",這是Jim Waldo(SunLabs的杰出工程師)的回答。
Rod Smith,作為IBM軟件開發(fā)小組中處理突發(fā)技術的副主席,寫道:"我們看到了,Java平臺是一種足夠好的技術,它具有在計算機工業(yè)界成為一支重大的獨成系列的力量的潛力。我們認為,我們最好要趕上這班時代列車并采納Sun的Java技術而不再依賴于以前的模式-自己開發(fā)每一件東西。"
Ed Cobb,BEA Systems公司CTO辦公室架構標準的副主席,寫道:"我們可以選擇其它主流的面向對象語言,但是Java提供了一種更好的組合特點使它適合于團隊環(huán)境下的大規(guī)模開發(fā)。"
"在過去十年中的大部分時間里,我受雇于Sun。因此,我不得不說,Java"突然來到"我的身邊。如果不是這一突然性的到來,我們也會需要另外一種似Java的東西來叩開業(yè)界中正迅速發(fā)展的網(wǎng)絡計算環(huán)境的大門。"-Rob Gingell,Cassatt Corporation的執(zhí)行副主席和CTO。
...對那些勤奮的計算機系的大學生們...
Michael Pilone,作為Blueprint Technologies的資深軟件工程師,他的回答是:"當時我盤算著我將來得找一份體面的工作,所以雖然我在大學中所學全部是C++,但是我還是另外自學了Java。"
"在我上碩士期間,我的指導教授讓我用Java工作,結果我用Java 1.0 beta版完成了我所有的功課。"-Raghu Donepudi,環(huán)球計算機公司的系統(tǒng)開發(fā)領導者。
...對那些熱衷于編程的狂熱者...
"我一畢業(yè)即用Java開始工作,我驚喜于Java的WORA的前景和Applets。"-Jack Herrington,作為Code Generation in Action (Manning)的作者和Code Generation Network的編輯。
"我甚至在1.0版本之前就開始學習Java了,因為其開發(fā)目標是作為微軟工具(VB和Visual C++)與Pascal語言的可選替代者",Laurent Ploix寫道,他是SunGard-Finance公司的工程總管和技術架構師。
"在1997年,我?guī)е槐臼謨宰鳛槎燃僮x物,在海灘度假的日子里,我沉浸在Java的優(yōu)美之中。我轉向了Java,并宣布C++是一種傳統(tǒng)的語言,并發(fā)誓一旦選擇了Java,永不回頭。"-Vlad Patryshev,Borland公司Java Business Unit的前任R&D工程師。
2.Java宣稱的"編寫一次,到處運行"效果怎么樣(WORA)?一直以來,WORA的重要性改變了多少?
"Java虛擬機,至少在概念上,是Java背后最強有力的思想。它的確實現(xiàn)了它許諾的輕便性。"-Bruce Tate,J2Life, LLC(一家Java技術咨詢公司)的主席。
"應用服務器和J2EE應用程序可以在多種平臺上良好地遷移。我認為在客戶端上實現(xiàn)WORA還是相當值得懷疑的,也許永遠不會實現(xiàn)。"-Michael Pilone
"它對我簡直是一個不可捉摸的平臺。"-Vlad Patryshev
"Java的早期成功根本上在于WORA。與其它可選擇工具相比,Java帶給了(并將進一步帶給)SI(系統(tǒng)集成商),ISV(獨立軟件開發(fā)商)和軟件工程師們一個根本不同的經(jīng)濟環(huán)境。"-Rod Smith
"Java在WORA方面的性能:a)比任何它之前的工具要好;b)就目前而言,與另外一些可選工具相比仍然要好得多;c)將作為Java價值的一個關鍵部分繼續(xù)保持下去。"-Rob Gingell
"WORA每次都帶給我極大的便利。我總是在Windows平臺上進行我的Java開發(fā);但是,我總是毫不費勁地把這些代碼發(fā)布到Solaris 或者Linux 環(huán)境中去。"-Eric Bruno,一個獨立的咨詢師,擅長于軟件架構,企業(yè)Java和C++開發(fā)。
"你可以把字節(jié)代碼轉換成MSIL(MS中間語言),而且你可以在J#中運行Java程序。這使我們可以針對我們產(chǎn)品的Java和.NET環(huán)境只保留一份代碼即可。"-Michael R. Smialek,Knowledge Dynamics的主席和CEO
"我經(jīng)常跨Windows,Linux和Sun Solaris開發(fā),測試和發(fā)布Java代碼,而僅需對XML配置文件作較少的改動。但是,隨著面向服務的結構的出現(xiàn),WORA的重要性已經(jīng)減弱了。"-Kyle Gabhart,作家和獨立咨詢師
"像Perl,Ruby和Python等語言一樣輕便。"-Jack Herrington
"一些人認為,由于通用操作系統(tǒng)的數(shù)目的下降,WORA將變得不再如以前那么重要。事實上,即使只有兩種合理的可能的目標平臺存在,WORA就一直是重要的。"-Ed Cobb
二、客戶端Java及開發(fā)工具選擇
3.你用Java編寫過多少代碼?估計你將來的工作有多少會用Java實現(xiàn)?
幾乎所的的回答者聲稱Java是他們主要的產(chǎn)品編碼工具,大多數(shù)人選擇他們的Java使用率超過70%。沒有人認為他們下一步的Java開發(fā)使用率會降低。
"去年,我們利用Java 技術開發(fā)出了800多個商業(yè)產(chǎn)品。幾乎我們所有的中間件都依賴于Java運行時刻庫。"-IBM的Rod Smith
"在我們的顧客中,我們仍看到具有可以預料的潛在需求的大量C/C++功能第一型的應用程序。他們經(jīng)常愿意用Java進行開發(fā),而Java虛擬機技術目前正發(fā)展到正好能夠處理這些類型系統(tǒng)的時候。
在Web應用程序開發(fā)中,我想,當人們的應用程序變得越來越大且越復雜時,我們將看到針對動態(tài)類型語言會出現(xiàn)一點后推力作用。他們將經(jīng)受運行時刻類型異常--事實上,他們早已認識到,如果采用象Java一樣的強類型語言的話,這是可以避免的。"-BEA公司的Ed Cobb
4.你用Java開發(fā)桌面應用和服務器應用的比例為多少?如果你開發(fā)過桌面應用程序,你更喜歡用SWT還是Swing,為什么?
Bruce Tate對這一問題的回答總結了所有其他人的觀點:"服務器端Java正是它應有的位置。"
至于,客戶端Java開發(fā),眾說紛紜...
"Swing太復雜,太不可預測,太難學。SWT則好一些,但一般而言,Java在用戶接口設計上很不成功。"-Tate,《Better, Faster, Lighter Java》和《Bitter Java》的作者
"我認為SWT有更好的方法,它鏈接到本地lib庫文件以達到加快速度和一致性的目的,但是我并不喜歡這些API,因為它們暴露出太多的老式的編碼技術。相比之下,Swing有一個更好些的API,但是其中充滿錯誤、性能低下且設計糟糕。"-Michael Pilone
"我更喜歡SWT...它比Swing更具本地化,Swing而可以說只是粗略地實現(xiàn)了本地化。"-Ed Cobb
"我寫Swing應用程序,然后使用Java Web Start來進行發(fā)布。我還沒有出賣過我的SWT型程序,因為它僅有有限的跨平臺支持并缺乏可靠的MVC設計。"-Kyle Gabhart
5.你使用的Java開發(fā)環(huán)境是什么?
很明顯,當前流行的Eclipse框架和集成開發(fā)環(huán)境是大多數(shù)對這一問題的回答,因為其是Windows和Linux平臺的主流環(huán)境。只有另外少數(shù)的回答者指定了其它幾個選擇:
"我選擇的平臺是WinXP Pro。在安裝了Cygwin和另外幾個開發(fā)工具后,你就可以得到一個具有硬件支持的非常有用的系統(tǒng)了。"-Michael Pilone
"我特別喜歡J2SE 5。說到IDE,我更喜歡Jbuilder,其次是IDEA。IDEA中有一些巧妙的實現(xiàn),但是良好的經(jīng)典的Jbuilder具有我需要的任何東西。"-Vlad Patryshev
"我一直使用emacs開發(fā)而用println進行調試。最近我在使用NetBeans,已驚奇于它給我?guī)淼木薮髱椭?-Jim Waldo
"請不要使用EJB!"-Laurent Ploix
"Visual Café。"-Smialek
"在必要的時候,我都使用vi進行開發(fā)。"-Kyle Gabhart