Java這十年 - Java 在中國 (4)

Java在中國
聚焦Sun中國

九九歸一Java情——專訪Sun中國研究院院長宮力
記者/閆輝
記者:10年前您能預見到今天Java的成功局面嗎?
宮力:其實,任何一個人都沒有想到Java到現在會這麼熱。從1995年宣佈叫“Java”到現在有十年,我到Sun公司有九年。JDK 1.0完成之後我就到了Sun公司。Java 1.0剛出來時,基本上是一個原型,現在的Java主要內核是以1.2爲起點的,這個版本之後基本上就沒有大的變化了, 而且橫向地演變出Java的移動版和企業版。目前移動版是世界上新一代手機的標準平臺。

記者:您當時加盟Sun公司是怎樣的情況?
宮力:應該說,我進入Sun公司也是因爲Java的緣故。Java出現後,儘管這個概念從計算機理論上看並不新,但他們真的實現了,所以覺得新奇,很關注。當時在和James Gosling等同行交流後,談到我要不要過來做。對於我們這些做科研出身的人來說,有機會去親身實現自己的理論, 是很有吸引力的。
其實,當時也根本不可能考慮到Java後來會變得這麼火,有時我們組還聊起不知道Java一年後是否繼續存在的話題。當時Java開發組只有幾十個人,從早上一直工作到晚上11點。因爲年輕人居多,還習慣中午和晚上都一起吃飯,飯後繼續工作。當時整個開發組都很玩命。
當時,總的感覺是我們處在硅谷和IT世界的中心,因爲經常和工業界的人開會,所有人走很遠的路也要到我們這裏來,因爲大家都很好奇,想來看看這羣人。就像現在的Google一樣,大家都希望參觀一下。當時,我們有很多相互之間競爭的合作伙伴,可能上午IBM過來,下午就是HP,所以我們要把黑板擦得很乾淨,以防無意中競爭對手之間信息泄露。

記者:您當時負責Java安全部分,能講述一下嗎?
宮力:Java剛出來的時候,宣傳語是非常大的,比如跨平臺、面向對象、安全等等一堆定語。其中就有一部分人會問:你所說的安全到底是什麼意思?
實際上,最初Java語言在安全性方面考慮得非常不成熟,因爲最早Java是爲機頂盒產品設計的,而機頂盒是一個個人使用的平臺,不是一個公共的計算平臺,所以不存在安全的問題。但是,後來和互聯網結合後,就從個人環境轉變爲多用戶環境,這產生了很大的安全問題。所以,當別人問Java安全性的時候,開始Sun只能很隨便的表示Java程序下載之後不能做哪些“壞事”,但什麼是“壞事”?如何解決?都沒有明確定義。同時,沒有考慮服務器端的需求,設計是以PC爲中心。
我去Sun之後,很大的工作和目的就是定義一個安全架構。這牽扯到平臺的應用對象是誰,如何表示和控制不同的安全需求,提供怎樣的安全編程模式,等等。如何能設計出一個既靈活又功能強,並且容易實現而且效率高的安全架構,不是一件容易的事。

記者:在Java開發過程中,您還有哪些印象深刻的經歷?
宮力:Java出現之後,IBM非常支持,大家都開玩笑說IBM關心Java的人比Sun公司還要多,因爲他們公司很大。IBM也曾對Sun表示過,說你沒有多少人,我幫你做算了,Sun肯定不願意,但在各種壓力下,找到了成立JCP組織的方案。大家都有一票,這樣可以實現最大程度的民主。
做完JDK 1.2版本之後,James Gosling察看了一下Java的發展速度,發現1.1比1.0的類數量增加了20%多,而1.2比1.1又增加了20%,看到這種指數級的成長速度,覺得速度過快,於是提出要控制類增加的速度。
說服手機廠商使用Java,有兩個重要原因:一個是給軟件移植帶來方便。摩托羅拉有次參加了一個展會,第一天看到競爭對手有一個不錯的應用,於是他們晚上回去之後就用Java開發,因爲Java程序可以在PC機上用模擬器開發,所以速度非常快,第二天他們就拿出了同樣的一個展示。另外安全性也是非常重要的,手機廠商喜歡可以擴展功能,但不要影響安全,現在J2ME的安全模式還是沿用我們最初的模式。
準備啓動J2EE項目的第一次會議我也非常有幸參與了,當時叫“Java for Enterprise”。因爲很多企業用戶提出很多大量的需求,這與普通用戶的需求是不一樣的,這時就探討如何啓動一個更適合企業需求的項目。而且會議上大家還討論如何說服Sun的高層通過這個項目。
我在JDK做了兩年多,把1.2版本做完了,就去做J2ME,後來負責了JXTA,差不多前後在Java上工作了四年整。2001年初,我回國擔任了Sun中國工程研究院院長。
很多人說Java作跨平臺沒有達到目的,但我認爲Java已經被Sun做到很好了。因爲在商業場合,很多規則就是這樣,大家都有自己的利益,很難達到真正跨平臺。而且,我們當時就考慮不需要把世界上所有C++的程序員都變成Java的程序員,只要1/2就可以了。

記者:很多人說Sun發明了Java,但Sun並沒有掙到很多錢,反而其它公司利用Java掙到了錢,您是否因此而感到遺憾?
宮力:大家都說Java不掙錢,其實很掙錢。我們Java組不到100人,每年授權費超過1億美元。而且很多公司一簽就是好幾年,所以大家還開玩笑說,現在即便把Java組立刻解散,什麼都不做,也可以坐收大量的版權費。
不過,因爲Sun本身是一個做平臺出身的公司,做事情容易橫向走。而且國外的公司比較單一,做平臺就和上家下家都是好朋友,靠大家一起把業務做得很大,Sun公司一直就是抱着這種理念,當然也有很多公司比如IBM就抱有既合作也競爭的理念。
同時,我認爲Sun在Java方面的得益是很大的,因爲Java給Sun帶來的無形資產遠遠大於其在上面的投入。這其中包括了很多間接收入,比如很多人認爲Sun能夠引導技術潮流,自然會購買它的產品。很多人盯着Java本身,我覺得是不全面的,這要綜合來看。就像IE雖然是免費的,但對微軟的意義太大了。
對我來說,能抓住這種機會感覺非常有意義。前一段時間見到了加州的一個留學出去的年輕工程師,他說:“我覺得你放棄了一些東西做Java是對的,掙錢的機會總是有的,但做一個影響全世界的產品的機會很少。”爲改變世界而努力,的確是硅谷能一直帶動IT領域的根本原因。

大家都來用Java淘金
Sun公司大中華區ISV業務總監  黃震
Java誕生10週年之際,作爲Sun公司在中國負責與軟件合作伙伴進行配合的負責人,我非常希望讓中國更多的軟件公司和程序員瞭解,Java是給軟件產業帶來無限價值的技術,也是爲軟件企業和軟件人才聚集財富的技術。
Sun公司是Java技術當之無愧的導師,因爲我們最瞭解Java的精髓。總是有很多人提出疑問:“Sun公司通過Java爲整個IT產業帶來了巨大的財富,甚至包括Sun公司的競爭對手都從中獲得了很大的好處,可是似乎不太容易看出Sun公司從Java得到了多少好處。”我覺得,如果Java爲整個世界帶來的好處是100億,Sun公司能夠從中佔到10%、甚至5%,我們就非常滿意了。這就是Sun公司的開放心態。Java是給軟件企業帶來財富的技術,如果你想走入Java的世界,大門隨時爲你敞開,Sun公司擁有完整的方案和計劃來支持你利用Java技術來賺錢。
在Sun公司的Java推廣計劃中,有兩項計劃首當其衝。
第一是Sun iForce Ready Center。這是一個知識共享體系,旨在形成共享技術的渠道分銷體系,支持渠道合作伙伴實現自身的價值增值。Sun在國內總代理中建立了多家iForce Ready Center,在Sun專業開發技術人員的強有力支持下,iForce Ready Center能夠爲解決方案供應商提供一個完整軟件解決方案移植、測試以及性能調優直至參考架構建立的優良環境,幫助合作伙伴在不影響現有應用實施的情況下將軟件平滑遷移到Sun公司的新產品、新技術平臺上面,並提升軟件解決方案的性能。
第二是Sun JavaChina聯盟。加入JavaChina聯盟,不僅可以在軟件開發技術培訓和項目實踐方面獲得直接、有效的幫助,積累更多的實踐經驗,而且可以通過Sun公司推出的一系列市場推廣活動獲得更多的商機。Sun JavaChina聯盟計劃中包括兩個方面的內容:一方面是一系列的技術培訓;另一方面是嚴謹的逐級認證。
身爲Sun公司在中國負責向ISV合作伙伴推廣Java技術的負責人,我衷心希望有更多的軟件公司和軟件人才加入到Java這個大家庭中來,一起快樂地創造財富。

最新調查

Java十大熱點問題揭曉

值此Java十年之際,很多網站和社區都對Java開發人員及相關愛好者進行了調查與訪問,下面列出十大熱點問題調查結果。人們發現,開發者對於Java存在着各種各樣的看法。下面列出有代表性的網友觀點。

1.你是如何開始用Java編程的?
● 我在Java一出現的時候就開始使用它進行編程。我爲它的‘一次編寫,到處運行’的理念以及Applet感到激動。
● 我在Java出1.0版本之前就開始學習它,因爲我期望它能作爲微軟產品(我對VB和Visual C++太失望了)和Pascal的替代品。
● 我曾經把Java手冊作爲休假時的閱讀材料,結果被它所吸引,轉而使用Java而放棄C++,並且永不回頭。
● 我所在的大學一直都在教C++課程,但我卻用了很多時間自學Java,因爲想用它找一份更好的工作。

2.Java曾經承諾“一次編寫/到處運行(WORA—Write Once, Run Anywhere)”,你認爲它兌現這個承諾了嗎?時至今日,你認爲“一次編寫/到處運行”的重要性發生改變了嗎?
● 應用程序服務器和J2EE應用程序能夠在不同的平臺之間很好地進行遷移。我對WORA(Write Once, Run Anywhere)在客戶端的效果表示懷疑,並且我覺得這些其實是不可能真正地達到的。
● 它讓我完全不用考慮使用哪種平臺。
● Java的早期成功應該歸功於WORA。它爲系統集成商、獨立軟件商、軟件設計師帶來不同的根本性的經濟利益,這點勝於其他語言。
● WORA每時每刻都在對我發生作用。我經常在Windows中完成我的Java開發工作,但是卻經常在Solaris或者Linux環境上進行不止一個的版本部署。
● 你能將字節碼轉換爲MSIL,並且也可以用J#編寫Java程序。這給我們的產品爲Java和.Net保留了一個代碼基礎。
● 我經常在Windows、Linux 和Sun Solaris平臺上做開發、測試和部署Java代碼的工作,在跨越平臺的時候只用對XML的配置文件做很少的更改。但是WORA的重要性在面向服務和架構方面有所削減。
● 一些人聲稱由於常用操作系統的數量的遞減,WORA的重要性也會隨之減弱。事實上即便只有兩個目標平臺,WORA也是非常重要的。

3.在你現在編寫的生產代碼中,有多大比例是用Java編寫的?你認爲在可預見的將來,這個比重是會增加、減少還是保持不變?
幾乎所有的被調查者都聲稱Java是他們進行編碼的主要工具,回答爲主要工具者超過了70%的比例。在對第二個問題的回答中,這個比例沒有降低的跡象。
● 去年我們對800個基於Java技術的產品通過了認證,我們幾乎所有的中間件產品都是基於Java運行時的。
● 我們仍然看到客戶對C和C++的任務認證的應用程序仍然存在大量的需求。我們希望經常能夠使用Java,但是Java的VM技術到了應該發展成爲能夠在這些不同的系統上運行的時候了。

4.在你開發的Java應用中,桌面應用和服務器端應用的比重分別是多少?如果你編寫桌面應用,你會選擇SWT還是Swing(或者其他GUI框架)?理由是什麼?
大部分回答爲:“Java存在於服務器端的任何地方。”
● Swing太過於複雜,太不可預知,並且太難學習。SWT要稍微好一些,但通常來說,Java在用戶界面方面實在不受歡迎。
● 我認爲SWT的方法非常好,它出於速度和一致性考慮而鏈接到本地的類庫,但是,我不喜歡API,它暴露了太多底層的東西。Swing有良好的API,但是它上面存在着太多的bug,較差的性能和糟糕的佈局。
● 我非常喜歡SWT。它比Swing更加自然,而Swing被描述爲粗略近似於自然。
● 我編寫Swing的應用程序,並且使用Java Web Start進行部署。我還不太相信SWT的價值,因爲它的跨平臺支持有限並且缺乏可靠的MVC設計。

5.在開發Java程序時,你首選的平臺、框架、IDE分別是什麼?
在這個問題中,由於Windows和Linux這兩個佔有統治地位的操作平臺,使得Eclipse Framework和IDE普及程度很高,這一點表現得特別明顯。有網友認爲:
● 我選擇的操作系統是WinXP Pro。在安裝了Cygwin和幾個其它的設備後,系統能夠對硬件提供很好的支持。
● 我喜歡J2SE 5。IDE方面,我喜歡JBuilder,IDEA是第二選擇。IDEA有更加靈巧的特性,但是我所需要的功能,老的JBuilder都有。
● 我過去使用emacs來進行開發,調試程序使用println。而現在,我使用NetBeans,並且非常驚訝,它居然能提供如此強大方便的幫助
● 在緊要關頭,我用vi進行開發。

6.在Java的整個發展過程中,你認爲JCP和開源社區誰起到的推動作用更大?
開源派:
● 目前來說是開源。JCP在積累實際經驗前總是相信標準。EJB,日誌,持久性這些都是在JCP中讓人感到不滿意的地方。JCP正在放棄Java的基礎。一些困難的問題正在很容易的被解決,但是相反,一些很簡單的問題卻變得日益複雜起來。
● 開源的實現正在引導着開發的過程,而JCP只是在定義標準。
● 如果是說絕對意義上的改革,我只能說是開源。開源的實現對於需要進行修復的漏洞響應很快。而JCP的進步和工業前進的步伐相比,顯然要慢很多。
● 很多創新都是通過JCP模型而來的。然而,在過去的20年裏,我們看到開源模型正在日益增長。
● 我已經發現了開源的主動性,尤其是Apache讓我感觸頗深——它是最具創新性和最有用處的。
JCP派:
● JCP對於Java發展的貢獻是功不可沒的。它爲整個Java生態系統提供了一個“物質核心”。很多不符合JCP標準的開源項目展現了各種不同的想法——它們有的很糟,有的則很精彩。它們是提供改革動力的引擎。

7.你認爲Sun應該將Java開放源碼嗎?
肯定派:

● 應該。而Sun不同意這樣做的唯一原因是它認爲Java是歸Sun所有的,並希望Java可以帶動Sun的發展。
● 一方面,開源的思想是很具吸引力的,因爲這會使得更多的bug在更短的時間內被解決。另一方面,這也會爲Java帶來一些分歧和互不兼容的虛擬機。
● 我們需要一個開源Java的主要原因是保證平臺的活力。如果Sun應該做什麼的話,顯然讓Java開源是這個計劃的保證。
● 我想Sun應該。“開源”Java並不需要Sun做任何工作。它主要需要其他人來做一些工作。擁有一個開源的Java是一個必然。我建議Sun能夠認識到這個必然並抓住這個機會。
否定派:
● 不。如果是開源的話,我們會看到各種樣式的Java。這最終會帶來問題,就像我們現在面對各種應用服務器所遇到的問題一樣。
● 不。我不相信一羣普通的人的想法可以替代那些關注基本思想的完整性的科學的觀點——這些通常是常人不需要關注的東西。
中間派:
● 這個問題無關緊要。Java已經可以按照自己的方式來發展。

8.如果你有權改變Java中的一樣東西,你希望改變什麼?
● 在底層,Java需要一個更加靈活的鍵入模型和一整套令編程更加容易的特點。我們不能將所有的事情都依賴類庫。
● Introspection,一個用來檢測JavaBean屬性的類——這個類太難用太笨拙了。
● 許可證。
● 爲開發者提供內存管理的工具。
● 增加對運算符重載的支持。
● Jar版本是Java急需的東西。我已經記不清多少次我的XML解釋器和日誌庫發生衝突了。
● Class Object。10年來一直沒有變過,應該加入很多東西了。
● Java平臺現在變得太複雜了。我們相信Java社區需要在明確部門分類這方面做一些更好的工作,進而使Java能夠繼續成長、興盛和成功。
● Java絕對需要一個更爲健壯的模型系統。現在,我們擁有的全部就是.jar文件;結果是造成了.jar文件“地獄”。現在,描述一個互連的模塊系統太困難了。
● 一個對象在被加載以及Java運行時類型之間的關係是我們仍將面對的錯誤。你不能在編譯期決定你的程序是否是類型安全的。另外,如果你合理地做一些動態的事情,你經常不得不去爲一個給定的類猜一個正確的類加載器。
● Java需要做的其它事情:運算符重載,預編譯指令,把聲明和實現分離(頭文件和源代碼文件),唯一的、非原生的機器定義符(出於許可證的問題)。
● Code-behind pages!!!ASP.NET和code-behind提供了巨大的複用性和靈活性。我希望看到JSP 3.0朝着這個方向努力。
● 我更喜歡利用Java對象訪問操作系統而不是使用JNI。大部分的Win 32/Linux API可以被封裝道Java的類中。

9.你認爲Java對整個軟件社羣最大的一個貢獻是什麼?
● 我們收到的最多的回覆是平臺無關、Java平臺、Java語言本身和由此而創建的社區。
● 有兩件事:一個是它把帶有垃圾回收機制的語言推向了廣大使用者,另一件是圍繞着這種語言建立的智能IDE。
● Java的確帶來了很大的變化,包括它迫使Microsoft重新設計新的產品,例如對Visual Studio的改進以及.NET。利用JavaScript實現的瀏覽器對Java來說成了NetScape的替代品。服務器端的編程前進了一大步,並可以實現上百萬站點的互連。
● 有很多學生不用再學C++了。
● 標準API的制定使得可以有很多不同生產商的實現。這就提供了一個對於共同接口進行最好實現的競爭,最後的結果是整個產業通過不斷的尋求更高質量的解決方案變得很靈活。

10.展望未來,你認爲Java語言還將像過去10年那樣佔據重要地位嗎?還是會被另一種更新、更強大的語言取代?
肯定派:

● Java在工業進化的過程中仍將會扮演極爲重要的角色,因爲人們將會把關注的焦點放在軟件的架構上,例如SOA。
● 我們實際上可以編寫出更多的語言,它們之中有些可以和Java完全不同,但是,它們可以保持一致的應用程序二進制接口(ABI)。這就是爲什麼Java在很長的一段時間內仍然很重要的原因。
● Java仍是IT產業中強有力的語言,但是腳本語言在某些特定的領域裏將會得到更廣泛的應用。
否定派:
● 不會的,語言在技術上的領先性都是暫時的,Java也一樣。因此,從某種意義上來說,關注Java的未來會更有趣。
● 當桌面電腦和筆記本被掌上設備取代的時候,我們將會需要一種更簡單、更強大的語言。
● C#對Java有潛在的威脅。它是更好的語言。
● Microsoft正在以令人難以置信的速度轉向.NET。它可以通過操作系統來擁有客戶,在這一點上,它比Java更有優勢。
● 在某些方面,Java虛擬機架構的缺陷會變得非常嚴重。如果可以提供設計更加優良的虛擬機,那麼它將極有可能替代Java平臺。

社羣視點

Java在中國這樣走過
文/林芷薰
把時鐘撥回到10年前,在上世紀的最後10年裏,中國的軟件開發技術與國際水平大概保持着兩到三年的“時間差”。1998年,當Sun公司緊鑼密鼓地準備推出Java 2、並將Java的標準化工作移交給JCP組織時,我們中的大多數人才剛剛開始接觸Java 1.1。說實話,那時候學習Java的同行很少有人能夠預料到,這種看似玩具的編程語言有一天會熱門到如此程度。
說起來,我們應該感謝Bruce Eckel的《Thinking in Java》,不僅因爲這是一本優秀的Java入門書籍,而且因爲這是一本代表着國際主流技術水準的好書。雖然拙劣的翻譯讓不少讀者對它恨之入骨,但畢竟是從這本書開始,我們中的大多數人第一次有了這樣一種感覺:全世界的程序員都是這樣在用Java編程。世界上流行的先進技術對於我們來說也不再是可望而不可及的。
進入21世紀以來,隨着大型企業/政府應用的增加,Java(準確地說,是J2EE)開始在中國逐漸風行。在大概兩年多的時間裏,衆多的軟件開發商走過了“純JSP—自主開發框架—JSP+Struts+EJB”的宿命歷程。到2003年前後,已經有相當一批公司積累了豐富的採用EJB和Struts框架開發Web應用的經驗。這時國內的J2EE技術水準可以說已經基本趕上國際潮流了。
2003年,在Java世界有兩件新興事物開始流行起來,其一是號稱“輕量級J2EE應用框架”的Spring,其二是基於POJO的O/R映射框架Hibernate。這兩個框架的先後出現幾乎是天作之合,以Rod Johnson爲代表的一羣J2EE架構師立即意識到:有了這兩個框架的幫助,我們就不再需要EJB——它們可以做得比EJB更好。這一次,國內的架構師們顯得更加敏銳——很大程度上應該歸功於TheServerSide網站的存在。
時至今日,中國的Java技術幾乎可以說是步步緊跟世界潮流:衆多遭遇到EJB種種難題的企業很快地遷移到基於Spring和Hibernate/JDO的輕量級架構上,國內甚至已經出現了專門提供Spring/Hibernate技術培訓/諮詢/顧問服務的公司;AOP剛剛在Rickard Oberg的blog裏熱鬧了幾個月,一些步伐較快的團隊就已經將其用在自己的項目中;AJAX纔在國外網站上冒出頭,國內竟然已經有不少實際用類似於AJAX的思想開發的項目,並且早已有人自主開發了AJAX實現框架;JSR-168、JSR-170等重要規範的發佈都會第一時間引起國內技術專家的關注;在EJB、JDO等規範專家組裏也出現了中國人的身影。
近來國內J2EE技術社羣的活躍固然和整個行業的氛圍有關,但有兩個網站功不可沒。其一是“Java視線”(www.javaeye.com),這個管理嚴格的論壇吸引了一批站在技術前沿的架構師/程序員發表言論觀點;其二是CSDN網站Java頻道(java.csdn.net),這裏彙集了整個Java世界最新的技術動態和產品發佈信息,成爲國內技術領袖們不可或缺的信息源頭。
在剛剛召開的JavaOne 2005大會上,Sun公司宣佈將放棄Java名稱中的“2”字:從1998年開始就被叫做“J2EE”的Java企業版,今後將改名爲Java EE。不過,不管名字怎麼變,Java還是那個Java,已經習慣了弄潮於技術潮頭的中國Java人面對即將到來的Java 5.0、6.0,早已做好了準備。

本刊寄語

Java : 軟件技術史上馬拉多納式的傳奇
策劃本期專題的時候,世青賽正在荷蘭上演,一張張年輕的面龐讓人不由得想起1979年的馬拉多納。馬拉多納少年成名,一路意氣風發,在萬衆矚目中成就霸業,他的傳奇讓其他任何人的精彩故事都顯得平淡無奇。然而,並不是所有的少年天才都能像他那樣備受上帝的寵愛,像中國的李華筠一樣,更多的新星沒能走完成功之路,夭折在半途。
其實一部軟件技術的發展史又何嘗不是如此!Lisp、Smalltalk、PL/1、OS/2、Ada……,多少天才的傑作和曾經被一致看好的技術最後被擠壓在歷史的角落裏,徒使英雄淚滿襟。10年前當Java問世的時候,儼然一顆超新星的模樣,但當時有誰能夠預言它未來的命運?10年來Java用自己的一路高歌猛進成就了軟件技術史上的一個馬拉多納式的傳奇。我們當然不滿足於一個簡單的情緒,而是希望通過本期專題與讀者一起回顧Java十年來的發展歷程,分析它的成功與不足,就算是爲這十年的傳奇做一個小結吧。當然,我們堅信,Java的傳奇還會繼續。希望到Java 20歲生日的時候,會有更多的人聚在一起來慶祝一個更大的傳奇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章