文章詳情頁
Java之父:為Java發展驚奇 和腳本語言走得更近
瀏覽:102日期:2024-03-18 14:47:53
十年前,Sun微系統公司將Java搬到了世人面前,這是首次協助企業建立具有前瞻性的思想的一款軟件,隨后Java迅猛擴散,深入到計算機業的幾乎每個角落。這項技術的幕后英雄,就是本文采訪的James Gosling。 上個世紀90年代初,Gosling發起并領導了一個名為Green的項目,此項目最終演變為Java。Java 的基本理念是創造一種可以在不需修改的情況下執行在各種運算設備上的程序。例如,一個裝備了Java虛擬機器的手機游戲軟件也應該可以在別的手機上使用。 過去十年,這項技術身經百戰。早期的合作伙伴微軟發現Java程序的平臺無關性對Windows帶來不利,于是稍做修改,另創適合Windows的Java版本,從而引發了七年的官司。由于消費性設備、PC及服務器需要有不同的Java,Sun一直努力想找到合適的方法與其他各方分享Java的掌控權。以至于到現在,包括IBM在內的許多公司都在不斷呼吁Sun開放Java主體部分的源碼。 盡管如此,Java已經在計算機領域站穩腳跟。Sun首席執行官Scott McNealy可能還是會發布冠冕堂皇的演說,但在上周二Sun JavaOne大會上他的一番講話話卻十分中肯,他說:“七、八年前的JavaOne演說現在聽起來真是寒磣,我們那時實在是太小看它了。我們根本不知道這項技術要做什么。 Gosling全程參與了JavaOne上周的活動,現在的他頭發已經花白,但牛仔褲、T恤衫和Birkenstock運動鞋的裝束始終未變。“他看來像是一個老嬉皮,Gosling的女兒在周二大會的影片中現身說法,惹得這位知天命的Java教父在臺上滿臉通紅。 以下是Gosling暢談Java理念的記錄。 問:在Java的設計之初,你心中有想像過它會是什么樣子嗎? Gosling:回想設計Green項目的時候,我們對長遠未來大談了許多。我們曾寫過一本很多場景組成的小冊子,許多Java設計都是依據這些場景構想出來的。我覺得那比較像是科幻小說的做法,你從來都不知道世界會走向何方,你可以任意預測技術的發展,但想象歸想象,和實際還是有很大差距的。我非常相信摩爾定律會成為現實,輕而易舉地而把一個個的點連成一了快速傳播信息的網絡。 我大膽預測許多科技一定會那樣發展,當然會只是存在安全、可靠及便攜等方面的問題。我們參與對這些問題的絕大部分給出答案,最后的結果一定會讓大家驚奇萬分。 問:最初,你的Green項目不是把重點放在消費性電子設備上嗎? Gosling:項目設計初期,我們花費很多時間和各界人士交談,我們看到同樣的問題發生在消費性電子設備、新興手機及嵌入式控制系統領域。我們和電梯、機車、電力控制系統的制造商及汽車界的工作人員交談過。我們也和VCR和電視機開發商交流過。在Green項目初期,我們決定做個原型,我們必須把精力集中在這一點,我們選擇了消費性電子設備,很大程度上是因為這個領域更有趣。 雖然許多人都覺得很這個計劃有意思,但我們還是疑惑是不是能把這個計劃用在自我支持上?差不多同時期,時代華納為全方位服務網絡公開招標,那正是我們夢寐以求的事──網絡連到家庭、在網絡上傳遞語音和影像、內容互動等等。“是的!這正是我們想要的,是我們為之奮斗的目標!于是我們就一頭扎了進來。 問:那實際上是在互動電視的發展初期吧? Gosling:沒錯,那真是一個具有遠見的計劃。很多人都說:“我們也想這樣做。 時代華納的計劃因為各種原因后來變得十分奇怪,我們沒能拿下他們的標。回想起來,我還很慶幸我們那時輸了。贏家SGI后來不知花了多少錢做那個單子,但沒得到多大回報。 問:你認為Java是用在這種狹窄領域上的技術呢,還是可能深入到在整個電腦業的技術? Gosling:我們并沒有計劃要把它推向整個業界,但我們看到整個產業在做類似的事,每個系統內部都裝有數碼控制器。但是存在著嚴重的相互操作性問題,所有東西都在相互整合,這事實引起了我們的注意。就像你站在暴力賽車場外看到所有車子都在朝競賽場中心開去,一定會撞成一團糟。 問:Java解決了相互操作性的問題,但微軟另辟蹊徑創出了.Net,引發了更高層的兼容性問題。有什么方法可以把.Net 及Java整合起來嗎? Gosling:某種程序(比如Web services),就像一座橋梁。但是我們不能把不愿融在一起的東西硬往一塊拉。微軟很明顯地就是想要走自己的路,他們向來喜歡標新立異。他們曾作為Java社區里非常優秀而可愛的成員,可惜只持續了半年多,后來他們認為這樣不好。 問:那是1995年還1996年的事吧? Gosling:應該是在1996年。共同合作雙方的意向。對微軟而言這是一個長期的教育過程,他們好像不太喜歡這種方式。他們貌似在跟你走更近,例如我們之間合作開發了不少不錯的產品,但其實彼此間還隔了一步之遙。我們之間的確有共通點,像Web services或相互操作性,都是很好的說明。 問:你們不能把用C#開發成的.Net程序上融入到Java虛擬機器中嗎? Gosling:我們的差別在于他們大量使用這種不安全的方式,但我堅決認為不應該用不安全的方式。問:不安全?您的意思是…… Gosling:源代碼有受管的和不受管的之分。受管源代碼是可以確保安全與穩定性的,而不受管的源代碼你無法保證什么。有時正確的做法也會引起內存損害,程序運作十分不容易分析。C程序是一種不受管程序,可能莫名其妙就掛了,最后造成安全上的重大影響。使用C語言,你可以假造事物的身份,但用Java,是絕不容許偽造身份的。問:微軟為什么想加入Java Community Process(JCP)? Gosling:我不清楚,你可以問問Sun 首席技術官Greg Papadopoulos。 問:你希不希望看到雙方回到當初半年多的密切合作狀態? Gosling:我很期待看到他們和JCP其他成員合作。 問:你們剛把Java應用服務器軟件作為玻璃魚開放源碼,是不是也有可能把Java標準版(Java SE,Java的基礎)開源發布? Gosling:或許會的。我們過去為Java SE做的一切和開放源代碼其實差不多,主要差別只是在于我們的授權要求要有測試。在做過調查后,我們認為測試是非常重要的。但開源界人士一方面說他們會接受測試,另一方面又說他們只是不同意測試。我們可能有一天會開放Java SE的源代碼,主要得考慮怎么做比較好。 有很多事讓我們十分緊張。許多人都有過使用JavaScript的經驗,不同JavaScript間也存在相當嚴重的相互操作性問題,對網頁制作者來說是一大夢魘。Java界的人都得拿著JavaScript手冊才能做事,真是太可怕了。 問:像BEA等公司會加入一些東西使得Java程序只有在他們的應用服務器上才能執行,到頭來Java也會變得不可攜,是這樣的嗎? Gosling:沒錯,這的確是個問題。但至少,這還只是在特別功能上而已。Java有個包命名(package naming)工具。當用API時,你得申明用的是公開標準的API──像Java等──或是某公司的專有API──例如com.bea,作為一個開發者就一定要十分小心。開發人員真得很在乎可攜性,每次使用com.bea你會覺得很難受。JavaScript的一個困難就是無法判斷你用的是不是某個瀏覽器專用的功能。 另外,事情也會演變成某個應用伺服器廠商具有一些想法,而大家都覺得不錯,這個想法就會送到JSR(Java Specification request),那么這家廠商第二或第三版本也會是在標準的Java框架內。 問:難道不能在開放Java源代碼后通過品牌名稱來控制兼容性嗎?比如說,要求在其Java名稱被充許前,就取得認證? Gosling:這點我們做過許多討論。Sun是一個十分民主的公司,有人認為這個方法可行,有人反對,目前反對者占多數。 問:你持反對觀點嗎? Gosling:我有時是站在贊成的一方,不過我得承認我常常反復不定。 問:能將五年前的Java技術和今天的做一比較嗎? Gosling:最大的差別在于Java已經變成許多大型的關鍵的系統的中心,這就需要保守一點。當你的系統是一個每晚結算數百億筆交易的銀行系統時,小小一個bug也會釀成巨禍。早期我們有很多異想天開的點子,但現在我們得考慮到哪些人會受到我們影響。現在一切都要考慮周全才行。 問:通過Groovy等項目,Sun正在讓Java世界和腳本語言走得更近,但坦白講我不太清楚編程語言和像PHP、Perl、Python這樣的腳本語言有什么不同。 Gosling:你的困惑其實是有根據的。世界上有太多松散的語言,給不同人提供不同的用途。 當人們提到腳本語言時,往往想到的是可以很快讓開發人員把東西拼湊好,很快拿出去跟客戶做演示。程序的性能怎么樣、擴充性如何,或是能不能建成一個大系統到在其次才考慮。但在Java設計上,我們不太在乎能不能很快寫成一個程序出門去做演示,我們在乎的是能不能很快寫成一個大型的具有良好擴充性的程序,到最后我們做的決定往往比較困難實現。一般來講,在設計上,腳本語言比編程語言要容易。 Java設計有兩個層次:Java虛擬機和Java語言。難點在Java虛擬機及其以下的部分。如果把腳本語言用在Java虛擬機上,就可以兼得兩者的優點。 問:你是這么做嗎? Gosling:是的。Groovy開發的東西可以獲得所有的Java庫,Java應用也可以使用Groovy。
標簽:
Java
相關文章:
排行榜