公眾號:mywangxiao
及時發(fā)布考試資訊
分享考試技巧、復(fù)習經(jīng)驗
新浪微博 @wangxiaocn關(guān)注微博
聯(lián)系方式 400-18-8000
Java之父詹姆斯戈斯林(JamesGosling)在Oracle主辦的OpenWorld大會上登臺發(fā)言時闡述了這一點。他調(diào)出JavaFX幻燈片,上面是一連串統(tǒng)計數(shù)字:超過8.5億個具有Java功能的桌面機和大約100億個具有Java功能的設(shè)備。實際上,Java虛擬機在電子設(shè)備中司空見慣:電子書閱讀器Kindle、藍光磁盤播放機和智能電話(包括不太智能的手機)等。iPhone(手機上網(wǎng))應(yīng)用程序可以在成千上萬部iPhone上運行,但Java嵌入在26億部手機上,從不太智能、20美元就能買到的手機,到最新一代的黑莓和Android手機無一不包。
請戈斯林到OpenWorld大會上演講,只是Oracle掌門人拉里埃利森(LarryEllison)希望向工程師們一再保證這門語言前途光明的手段之一。Oracle想要并購Sun,但它仍得等待歐洲監(jiān)管部門批準這一決策。美國政府已開了綠燈,但歐洲政府官員由于擔心MySQL的發(fā)展還沒有同意這一起交易。戈斯林和Sun董事長麥克尼利(McNealy)都表示,一旦并購工作完成,Java會從Oracle得到比以往更多的關(guān)注和資源。
從近期來看,埃利森傳達的信號也許不是很重要,因為如今Java已成氣候,要改變發(fā)展方向也并不容易。當然,也有一些人認為,Oracle的商業(yè)模式太不一樣了,所以它必然會對Java生態(tài)系統(tǒng)的每個部分進行重大變化??傮w來說,每拿出一個Java可能變化的理由,就有同樣充足的理由表明Oracle可能還是希望保持現(xiàn)狀。
企業(yè)級應(yīng)用是主戰(zhàn)場
Java最先在服務(wù)器端找到了自己的位置,未來這個領(lǐng)域仍是有望看到Java虛擬機的主要地方。對Oracle的所有產(chǎn)品來說,大型服務(wù)器也是主要的安身之處,所以出現(xiàn)這對組合自在情理當中。雖然PHP編程員青睞MySQL,但對數(shù)據(jù)密集型的企業(yè)應(yīng)用來說,許多最要緊的項目還是使用基于Oracle的架構(gòu)封裝而成的Java,這種情況應(yīng)該不會很快發(fā)生變化。
Sun稱,GlassFish應(yīng)用服務(wù)器每個月的下載量超過100萬人次,Tomcat等比較舊的平臺仍然很常見。由于Java這項技術(shù)備受推崇、運行速度快、真正跨平臺,大型企業(yè)(如銀行和保險公司)對Java開發(fā)人員求之若渴。
不過,Java不再被認為是最新最酷的語法。一些編程員對靜態(tài)類型語言的結(jié)構(gòu)滿腹牢騷,紛紛改用更新穎或更簡單的語言,比如Ruby、Python或PHP。現(xiàn)在許多較簡單的Web應(yīng)用程序就是用這些語言開發(fā)而成的,因為它們編寫的代碼容易修改,能快速建立原型。然而,這些使用便捷的新語言常常離不開Java:Ruby開發(fā)人員常常使用JRuby(基于Java實現(xiàn)的Ruby語言),因為Java虛擬機能夠更出色地處理繁重任務(wù)、釋放多個線程。Jython(基于Java實現(xiàn)的Python語言)也相似。
Java現(xiàn)在正在加入一些最新的編程技術(shù),以此遏制這些新語言大舉入侵。Grails明顯模仿了Ruby onRails的許多簡單的說明性模式;Grails這種框架利用名為Hibernate的數(shù)據(jù)庫中間件,把Groovy等腳本插件結(jié)合起來。Groovy本身添加了眾多的動態(tài)選項便于代碼解釋,同時可以直接鏈接至Java應(yīng)用編程接口(API)的任何部分。甚至不需要考慮Python或Ruby,因為Groovy憑借一種精巧、現(xiàn)代的語法,讓Java編程員可以使用似乎變化無窮的龐大庫和底層穩(wěn)若磐石的虛擬機。
走上移動之路
Java手機的數(shù)量(估計約26億部)委實驚人,因為市面上許多最簡單的手機里面都運行Java平臺微型版(Java ME)。這讓Wattpad.com等公司得以構(gòu)建在整個第三世界都能順暢運行的文檔閱讀平臺。
不過,運行Java的智能電話數(shù)量相對少一點。iPhone的巨大成功激勵許多人重新學習ObjectiveC,這門語言讓編程員對于內(nèi)存使用等一些系統(tǒng)問題提高了控制能力。Java為編程員隱藏了大部分底層問題,這是個優(yōu)點,但前提是不需要管理內(nèi)存等資源,因為要是垃圾收集出現(xiàn)一個小失誤,有些游戲就運行不了??蛇z憾的是,因為電池續(xù)航時間是極其重要的一個因素,智能電話需要比幾乎其他任何平臺更嚴格的資源管理。
不過,Java編程員仍然很吃香,因為黑莓手機在其新平臺上繼續(xù)采用JavaME:它為手機的情景模式(profile)添加了支持觸摸屏和方向感應(yīng)器的功能。而Android存在不可預(yù)知的因素。由于谷歌開放了Android的使用,許多手機廠商搭上Android這輛彩車。
谷歌的Android建立在開源Apache Harmony及其類上,而不是建立在Sun開發(fā)的Java開發(fā)工具包(JDK)和JavaME上。對使用Eclipse編寫代碼的人來說,它們看上去幾乎一模一樣。在其他許多情況下也無關(guān)緊要,因為Android開發(fā)使用了很多XML表單,但如果這兩套開發(fā)框架離對方漸行漸遠,這種分裂可能會變成大問題。
收復(fù)桌面陣地
大多數(shù)人仍然認為Java在桌面端從來沒有取得成功,這是過去。如今,Java正在緩慢而穩(wěn)步地滲入到現(xiàn)代操作系統(tǒng)的各個角落。雖然用Swing編寫的標準應(yīng)用程序因試圖定位在每個平臺的最基本部分而繼續(xù)遭殃,但是有了像JavaFX和WebStart這些比較新的開發(fā)平臺和框架,就有可能通過Web有效地部署軟件。本地平臺可處理Java歸檔(JAR)的所有緩存工作。只要點擊鏈接,有時偶爾隨后點擊幾下授予權(quán)限的對話框,軟件就可以安裝及更新,還可以隨時運行。
JavaFX仍然是一個名副其實的未知因素。圖形功能現(xiàn)在可與Adobe的Flash相競爭;計算引擎可支持大部分的JavaAPI,但這門語言是一門奇怪的混合語言,融合了正宗Java、JavaScript及其他的一些標記語言。其代碼比正規(guī)的Java簡單,所以Java編程員又要學習新的東西。不過,對極具互動性的桌面工具而言,新的動畫類也許值得花時間學習。WebStart正在繼續(xù)慢慢改進通過瀏覽器直接把軟件部署到桌面的功能。
搶占嵌入式領(lǐng)域
Java還在人們最預(yù)料不到的地方茁壯成長。雖然C編程人員可能從來不會承認Java虛擬機巧妙處理存儲區(qū)、快速運行的功能,但Java在非智能手機、機頂盒、嵌入式芯片、Kindle及其他低功耗設(shè)備取得的成功表明:Java虛擬機完全有能力在嵌入式應(yīng)用方面一展身手。Java的普及性還幫助編程人員從大平臺遷移到小平臺。雖然為大型機開發(fā)企業(yè)級應(yīng)用軟件改成開發(fā)小型嵌入式代碼并不簡單,但Java標準大大簡化了這種轉(zhuǎn)變,這讓其他許多工具自嘆弗如。
Java程序包也在變得越來越小巧。戈斯林用塵埃來形容一臺硬幣大小、能夠識別Java的計算機。JavaCard是面向這類小型程序包的一種虛擬機和API,它即將迎來3.0版,這個里程碑式版本將增添網(wǎng)絡(luò)連接功能。盡管這些小不點還沒有小得足以放入到人的眼睛中,但直接與互聯(lián)網(wǎng)通話的功能卻讓它們顯得極具誘惑力。
合作伙伴會分道揚鑣?
所有開發(fā)人員的最大擔心是:要是Oracle收購Sun的交易塵埃落定,會出現(xiàn)什么樣的利益沖突變化?Oracle是靠收取大筆的軟件許可費成長壯大,其軟件可運行在客戶想要購買的任何硬件上。而另一方面,Sun通常是免費贈送軟件,然后通過銷售服務(wù)器賺到一些錢。這些經(jīng)銷策略也許不會立即發(fā)生變化,因為慣性實在太太了,但誰也不知道將來Oracle會做出怎樣的決策。
一些人認為,Oracle過去在收取大筆許可費方面屢試不爽,只會鼓勵埃利森對Sun采取類似的手法。也許Oracle的銷售團隊眼下就在垂涎這個機會:針對Java以前免費的地方開始逐步提高許可費。為了避免重新編寫Java平臺企業(yè)版(JavaEE)應(yīng)用軟件,許多企業(yè)很可能寧可支付每個CPU 100美元、200美元甚至100萬美元的費用。
批評人士指出,Oracle很容易開發(fā)出新版Java虛擬機,針對不同的市場推出不同的性能級別。桌面虛擬機可能保持免費,Oracle甚至可能會掏錢請電腦廠商來推銷Java和JavaFX,而處理極限多線程方面的性能改進可能會收取非常高的費用。從用戶身上撈錢有好多法子,許可費相比之下往往便宜得多:要是讓拒不服從的編程員先學習一門新語言,然后重新編寫代碼庫,那成本高多了。
但也有人認為,Oracle也許不會采用這一招。一名接近Sleepycat(這家開源數(shù)據(jù)庫公司在2006年被Oracle收購)的消息人士表示,Oracle已把技術(shù)隊伍的規(guī)模擴大了約一倍,而所有雙許可模式原封不動。軟件仍然采用開源或商業(yè)許可證這兩種形式。如果Oracle像Sleepycat那樣對待Java,社區(qū)許可及其他方案仍然會跟以前一樣免費、隨處可得,同時有更多的工程師來改進代碼。
與其他各大Java合作伙伴的長期關(guān)系方面仍存在更深層的問題。谷歌繼續(xù)支持ApacheHarmony,這個代碼超過125萬行的項目似乎一心要破壞Sun作為世界中心的地位。IBM輸?shù)袅藸帄ZSun的競標戰(zhàn),現(xiàn)在發(fā)現(xiàn)競爭對手Oracle的實力更強勁了。IBM設(shè)計了Eclipse開發(fā)工具,可能也會開始把Java平臺帶往另一個方向。
其他合作伙伴的態(tài)度比較激烈。SAP公司首席技術(shù)官VishalSikka一再要求Sun發(fā)布Java社區(qū)進程(JCP),著重提到了Oracle在2007年提出的方案:將控制權(quán)交由一家開放、獨立、與廠商中立的標準組織,標準組織的所有成員在機會均等的前提下參與。雖然Oracle對相關(guān)細節(jié)基本保持緘默,但可以認為,這家公司會因為從Sun承襲過來的一些觀點而重新贏得尊重。
但是,盡管其他合作伙伴可能會參與恫嚇的舉動,但他們可能會考慮度的問題,因為大家其實是相互牽制的,任何過激的行為都極可能會被阻止,因為大家都認識到一次編寫、到處運行理念具有的優(yōu)勢。如果為Android手機編寫的代碼無法很容易地遷移至索尼藍光播放機或Glassfish服務(wù)器,另一門語言就有機會應(yīng)運而生。實際上已經(jīng)有多家公司在編寫工具包,讓用戶可以在iPhone上輕松運行Ruby on Rails或Python軟件。
另外,許多這些比較新的語言可能會成為不可小覷的競爭對手,而暗斗過多只會幫助它們攻城掠地?,F(xiàn)在有幾十種非常好、知名度小一點的開源程序包,只要忠實的愛好者稍加轉(zhuǎn)換,通常就能把它們移植到每個平臺上。比如,Python已經(jīng)是一些科學領(lǐng)域的主要語言,谷歌選擇Python、而不是Java作為其應(yīng)用引擎(AppEngine)支持的第一種語言。雖然IBM、Oracle和谷歌在爭奪主導(dǎo)權(quán)的競爭中可能會相互排擠,但它們必須認識到:所有人都受益于標準化,而不是壟斷。要是誰敢過于排擠別人、企圖一手控制Java,其他廠商可能會奔向其競爭對手。
Java也開應(yīng)用程序商店?
Java代碼庫仍相當有凝聚力、相對標準化,這個事實惹得眾人猜測:Sun(如果合并案完成,還有Oracle)到底會怎樣利用Java的普及性來大發(fā)其財,又不提高許可費、擠壓每個人?如果有人開發(fā)出一種面向整個Java生態(tài)系統(tǒng)的應(yīng)用程序商店(AppStore),從而像銷售面向iPhone的應(yīng)用程序那樣銷售用Java編寫的小組件(widget)它們可以在桌面、手機、藍光播放機或可以使用Java的其他任何平臺上運行,將會怎么樣?
最近已經(jīng)有了面向Android手機的一批數(shù)量可觀的應(yīng)用程序,Sun也在謀劃一家Java商店,好讓人們只需把應(yīng)用程序拖到桌面上,或者只要再編一點代碼,就可以把各應(yīng)用程序結(jié)合起來,從而讓它們可以在Java世界的幾乎每個角落里運行。不過,處理截然不同的屏幕和用戶界面還是個挑戰(zhàn)。
設(shè)想一下這種場景有多吸引人:開發(fā)人員編寫的某個應(yīng)用程序在Android手機上運行著,他在辦公桌面上處理任務(wù),回到家后在客廳的藍光播放機上順暢運行。
把Java應(yīng)用程序帶到坐沙發(fā)的人面前甚至有點出人意料,因為Java這門語言在被叫做Oak的早期階段,本意就是運行在機頂盒上。這種遠景將依賴于Java平臺的最大優(yōu)點:普及性和跨平臺的穩(wěn)定性,也許這些優(yōu)點會幫助Java給其發(fā)明者帶來滾滾收入。(網(wǎng)絡(luò)轉(zhuǎn)載,僅供參考!)
編輯推薦:
(責任編輯:xy)