Java的輝煌還能持續多久?

 Oracle對Sun的收購引發了人們對Java未來的一絲擔心,Oracle能否繼續保持Java的開放性,面對Ruby、Python或PHP 等一批輕量型語言的崛起,Java能否繼續保持其在開發領域的領導地位?

      14年前,Sun公司的一位營銷天才把一門試驗性的跨平臺語言由象徵踏實的Oak(橡樹),改名爲香氣四溢的Java(咖啡)時,可能他沒有想到這 門語言能有後來的輝煌。事實上,如果現在Sun想爲這門語言改名,以準確體現其在計算機行業的地位,似乎Oak更形象。今天,雖然Java語言並非真正意 義上的遍地開花,但它已經出現在衆多場合和設備中,而且它享有運行穩定、設計精良的美名; Java代碼也許無法主導所有計算機或所有平臺,但它離成爲通用語言已近在咫尺。

      Java之父詹姆斯戈斯林(James Gosling)在Oracle主辦的OpenWorld大會上登臺發言時闡述了這一點。他調出JavaFX幻燈片,上面是一連串統計數字:超過8.5億 個具有Java功能的桌面機和大約100億個具有Java功能的設備。實際上,Java虛擬機在電子設備中司空見慣:電子書閱讀器Kindle、藍光磁盤 播放機和智能電話(包括不太智能的手機)等。iPhone(手機上網)應用程序可以在成千上萬部iPhone上運行,但Java嵌入在26億部手機上,從 不太智能、20美元就能買到的手機,到最新一代的黑莓和Android手機無一不包。

      請戈斯林到OpenWorld大會上演講,只是Oracle掌門人拉里埃利森(Larry Ellison)希望向工程師們一再保證這門語言前途光明的手段之一。Oracle想要併購Sun,但它仍得等待歐洲監管部門批准這一決策。美國政府已開 了綠燈,但歐洲政府官員由於擔心MySQL的發展還沒有同意這一起交易。戈斯林和Sun董事長麥克尼利(McNealy)都表示,一旦併購工作完 成,Java會從Oracle得到比以往更多的關注和資源。

      從近期來看,埃利森傳達的信號也許不是很重要,因爲如今Java已成氣候,要改變發展方向也並不容易。當然,也有一些人認爲,Oracle的商業模 式太不一樣了,所以它必然會對Java生態系統的每個部分進行重大變化。總體來說,每拿出一個Java可能變化的理由,就有同樣充足的理由表明 Oracle可能還是希望保持現狀。

企業級應用是主戰場

      Java最先在服務器端找到了自己的位置,未來這個領域仍是有望看到Java虛擬機的主要地方。對Oracle的所有產品來說,大型服務器也是主要 的安身之處,所以出現這對組合自在情理當中。雖然PHP編程員青睞MySQL,但對數據密集型的企業應用來說,許多最要緊的項目還是使用基於Oracle 的架構封裝而成的Java,這種情況應該不會很快發生變化。

      Sun稱,GlassFish應用服務器每個月的下載量超過100萬人次,Tomcat等比較舊的平臺仍然很常見。由於Java這項技術備受推崇、 運行速度快、真正跨平臺,大型企業(如銀行和保險公司)對Java開發人員求之若渴。

      不過,Java不再被認爲是最新最酷的語法。一些編程員對靜態類型語言的結構滿腹牢騷,紛紛改用更新穎或更簡單的語言,比如Ruby、Python 或PHP。現在許多較簡單的Web應用程序就是用這些語言開發而成的,因爲它們編寫的代碼容易修改,能快速建立原型。然而,這些使用便捷的新語言常常離不 開Java: Ruby開發人員常常使用JRuby(基於Java實現的Ruby語言),因爲Java虛擬機能夠更出色地處理繁重任務、釋放多個線程。Jython(基 於Java實現的Python語言)也相似。

      Java現在正在加入一些最新的編程技術,以此遏制這些新語言大舉入侵。Grails明顯模仿了Ruby on Rails的許多簡單的說明性模式;Grails這種框架利用名爲Hibernate的數據庫中間件,把Groovy等腳本插件結合起來。Groovy本 身添加了衆多的動態選項便於代碼解釋,同時可以直接鏈接至Java應用編程接口(API)的任何部分。甚至不需要考慮Python或Ruby,因爲 Groovy憑藉一種精巧、現代的語法,讓Java編程員可以使用似乎變化無窮的龐大庫和底層穩若磐石的虛擬機。

走上移動之路

      Java手機的數量(估計約26億部)委實驚人,因爲市面上許多最簡單的手機裏面都運行Java平臺微型版(Java ME)。這讓Wattpad.com等公司得以構建在整個第三世界都能順暢運行的文檔閱讀平臺。

      不過,運行Java的智能電話數量相對少一點。iPhone的巨大成功激勵許多人重新學習Objective C,這門語言讓編程員對於內存使用等一些系統問題提高了控制能力。Java爲編程員隱藏了大部分底層問題,這是個優點,但前提是不需要管理內存等資源,因 爲要是垃圾收集出現一個小失誤,有些遊戲就運行不了。可遺憾的是,因爲電池續航時間是極其重要的一個因素,智能電話需要比幾乎其他任何平臺更嚴格的資源管 理。

      不過,Java編程員仍然很吃香,因爲黑莓手機在其新平臺上繼續採用Java ME:它爲手機的情景模式(profile)添加了支持觸摸屏和方向感應器的功能。而Android存在不可預知的因素。由於谷歌開放了Android的 使用,許多手機廠商搭上Android這輛彩車。

      谷歌的Android建立在開源Apache Harmony及其類上,而不是建立在Sun開發的Java開發工具包(JDK)和Java ME上。對使用Eclipse編寫代碼的人來說,它們看上去幾乎一模一樣。在其他許多情況下也無關緊要,因爲Android開發使用了很多XML表單,但 如果這兩套開發框架離對方漸行漸遠,這種分裂可能會變成大問題。

收復桌面陣地

      大多數人仍然認爲Java在桌面端從來沒有取得成功,這是過去。如今,Java正在緩慢而穩步地滲入到現代操作系統的各個角落。雖然用Swing編 寫的標準應用程序因試圖定位在每個平臺的最基本部分而繼續遭殃,但是有了像JavaFX和Web Start這些比較新的開發平臺和框架,就有可能通過Web有效地部署軟件。本地平臺可處理Java歸檔(JAR)的所有緩存工作。只要點擊鏈接,有時偶 爾隨後點擊幾下授予權限的對話框,軟件就可以安裝及更新,還可以隨時運行。

      JavaFX仍然是一個名副其實的未知因素。圖形功能現在可與Adobe的Flash相競爭;計算引擎可支持大部分的Java API,但這門語言是一門奇怪的混合語言,融合了正宗Java、JavaScript及其他的一些標記語言。其代碼比正規的Java簡單,所以Java編 程員又要學習新的東西。不過,對極具互動性的桌面工具而言,新的動畫類也許值得花時間學習。Web Start正在繼續慢慢改進通過瀏覽器直接把軟件部署到桌面的功能。

搶佔嵌入式領域

      Java還在人們最預料不到的地方茁壯成長。雖然C編程人員可能從來不會承認Java虛擬機巧妙處理存儲區、快速運行的功能,但Java在非智能手 機、機頂盒、嵌入式芯片、Kindle及其他低功耗設備取得的成功表明:Java虛擬機完全有能力在嵌入式應用方面一展身手。Java的普及性還幫助編程 人員從大平臺遷移到小平臺。雖然爲大型機開發企業級應用軟件改成開發小型嵌入式代碼並不簡單,但Java標準大大簡化了這種轉變,這讓其他許多工具自嘆弗 如。

      Java程序包也在變得越來越小巧。戈斯林用塵埃來形容一臺硬幣大小、能夠識別Java的計算機。JavaCard是面向這類小型程序包的一種虛擬 機和API,它即將迎來3.0版,這個里程碑式版本將增添網絡連接功能。儘管這些小不點還沒有小得足以放入到人的眼睛中,但直接與互聯網通話的功能卻讓它 們顯得極具誘惑力。

合作伙伴會分道揚鑣?

      所有開發人員的最大擔心是:要是Oracle收購Sun的交易塵埃落定,會出現什麼樣的利益衝突變化?Oracle是靠收取大筆的軟件許可費成長壯 大,其軟件可運行在客戶想要購買的任何硬件上。而另一方面,Sun通常是免費贈送軟件,然後通過銷售服務器賺到一些錢。這些經銷策略也許不會立即發生變 化,因爲慣性實在太太了,但誰也不知道將來Oracle會做出怎樣的決策。

      一些人認爲,Oracle過去在收取大筆許可費方面屢試不爽,只會鼓勵埃利森對Sun採取類似的手法。也許Oracle的銷售團隊眼下就在垂涎這個 機會:針對Java以前免費的地方開始逐步提高許可費。爲了避免重新編寫Java平臺企業版(Java EE)應用軟件,許多企業很可能寧可支付每個CPU 100美元、200美元甚至100萬美元的費用。

      批評人士指出,Oracle很容易開發出新版Java虛擬機,針對不同的市場推出不同的性能級別。桌面虛擬機可能保持免費,Oracle甚至可能會 掏錢請電腦廠商來推銷Java和JavaFX,而處理極限多線程方面的性能改進可能會收取非常高的費用。從用戶身上撈錢有好多法子,許可費相比之下往往便 宜得多:要是讓拒不服從的編程員先學習一門新語言,然後重新編寫代碼庫,那成本高多了。

      但也有人認爲,Oracle也許不會採用這一招。一名接近Sleepycat(這家開源數據庫公司在2006年被Oracle收購)的消息人士表 示,Oracle已把技術隊伍的規模擴大了約一倍,而所有雙許可模式原封不動。軟件仍然採用開源或商業許可證這兩種形式。如果Oracle像 Sleepycat那樣對待Java,社區許可及其他方案仍然會跟以前一樣免費、隨處可得,同時有更多的工程師來改進代碼。

      與其他各大Java合作伙伴的長期關係方面仍存在更深層的問題。谷歌繼續支持Apache Harmony,這個代碼超過125萬行的項目似乎一心要破壞Sun作爲世界中心的地位。IBM輸掉了爭奪Sun的競標戰,現在發現競爭對手Oracle 的實力更強勁了。IBM設計了Eclipse開發工具,可能也會開始把Java平臺帶往另一個方向。

      其他合作伙伴的態度比較激烈。SAP公司首席技術官Vishal Sikka一再要求Sun發佈Java社區進程(JCP),着重提到了Oracle在2007年提出的方案:將控制權交由一家開放、獨立、與廠商中立的標 準組織,標準組織的所有成員在機會均等的前提下參與。雖然Oracle對相關細節基本保持緘默,但可以認爲,這家公司會因爲從Sun承襲過來的一些觀點而 重新贏得尊重。

      但是,儘管其他合作伙伴可能會參與恫嚇的舉動,但他們可能會考慮度的問題,因爲大家其實是相互牽制的,任何過激的行爲都極可能會被阻止,因爲大家都 認識到一次編寫、到處運行理念具有的優勢。如果爲Android手機編寫的代碼無法很容易地遷移至索尼藍光播放機或Glassfish服務器,另一門語言 就有機會應運而生。實際上已經有多家公司在編寫工具包,讓用戶可以在iPhone上輕鬆運行Ruby on Rails或Python軟件。

      另外,許多這些比較新的語言可能會成爲不可小覷的競爭對手,而暗鬥過多隻會幫助它們攻城掠地。現在有幾十種非常好、知名度小一點的開源程序包,只要 忠實的愛好者稍加轉換,通常就能把它們移植到每個平臺上。比如,Python已經是一些科學領域的主要語言,谷歌選擇Python、而不是Java作爲其 應用引擎(App Engine)支持的第一種語言。雖然IBM、Oracle和谷歌在爭奪主導權的競爭中可能會相互排擠,但它們必須認識到:所有人都受益於標準化,而不是 壟斷。要是誰敢過於排擠別人、企圖一手控制Java,其他廠商可能會奔向其競爭對手。

Java也開應用程序商店?

      Java代碼庫仍相當有凝聚力、相對標準化,這個事實惹得衆人猜測:Sun(如果合併案完成,還有Oracle)到底會怎樣利用Java的普及性來 大發其財,又不提高許可費、擠壓每個人?如果有人開發出一種面向整個Java生態系統的應用程序商店(App Store),從而像銷售面向iPhone的應用程序那樣銷售用Java編寫的小組件(widget)它們可以在桌面、手機、藍光播放機或可以使用 Java的其他任何平臺上運行,將會怎麼樣?

      最近已經有了面向Android手機的一批數量可觀的應用程序,Sun也在謀劃一家Java商店,好讓人們只需把應用程序拖到桌面上,或者只要再編 一點代碼,就可以把各應用程序結合起來,從而讓它們可以在Java世界的幾乎每個角落裏運行。不過,處理截然不同的屏幕和用戶界面還是個挑戰。

      設想一下這種場景有多吸引人:開發人員編寫的某個應用程序在Android手機上運行着,他在辦公桌面上處理任務,回到家後在客廳的藍光播放機上順 暢運行。

      把Java應用程序帶到坐沙發的人面前甚至有點出人意料,因爲Java這門語言在被叫做Oak的早期階段,本意就是運行在機頂盒上。這種遠景將依賴 於Java平臺的最大優點:普及性和跨平臺的穩定性,也許這些優點會幫助Java給其發明者帶來滾滾收入。

 

所轉地址http://www.blogjava.net/yaozhongping/archive/2011/03/03/345589.html

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