posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Android動了Java的奶酪?

          Posted on 2007-12-29 10:29 詩特林 閱讀(2029) 評論(10)  編輯  收藏 所屬分類: J2EE
            應(yīng)賽迪網(wǎng)寫的專稿:http://java.ccidnet.com/art/12013/20071228/1325101_1.html

          Android動了Java的奶酪?

           

          Android,號稱“史上首個全免費(fèi)開放的手機(jī)平臺”。Google Android動了誰的奶酪?是Apple,還是微軟?互聯(lián)網(wǎng)時代奇跡般崛起的Google,已經(jīng)成為微軟的心腹大患。然而不論Google OS的謠言傳得多么活靈活現(xiàn),業(yè)界多么意淫Google直接挑戰(zhàn)微軟Windows操作系統(tǒng),然而Google從來都是按兵不動。Google看得很清楚,桌面操作系統(tǒng)時代快要結(jié)束了,現(xiàn)在是掌上操作系統(tǒng)時代登場了,誰能夠先一步占領(lǐng)消費(fèi)者的手掌,誰才是真正的贏家。這一次,Google終于亮劍了,亮出來的絕對是一把無堅(jiān)不摧的利劍——Android。這回該輪到Sun頭痛了,原來Android動的就是Sun的奶酪。

          一、        Android,Java平臺的盜版?

          首先,Java編程語言與Java平臺是兩個完全不同的概念。前者泛指一系列編程的語法,而后者包括前者,同時又超出前者的范圍。就一般而言,Java平臺由三駕馬車組成:核心的Java APIs(包、框架及類庫)、Java字節(jié)碼(編譯且可執(zhí)行的形式)以及Java虛擬機(jī)(JVM,執(zhí)行字節(jié)碼的運(yùn)行機(jī)制)。就Java語言而言,只不過是Java平臺中的一小部分,因?yàn)槠渌Z言同樣可以實(shí)現(xiàn)Java語言的功能,例如Groovy、JRubyJPython等等語言,這些語言同樣可以編寫出運(yùn)行在JVM上執(zhí)行的字節(jié)碼。

          若某種平臺想實(shí)現(xiàn)Java平臺這樣的功能,那么,首先必須實(shí)現(xiàn)Java SEJava ME(由于Java EEAndroid的關(guān)系沒這么大,因此這里不討論)規(guī)范所規(guī)定的這三駕馬車。如果該平臺沒有依賴或?qū)崿F(xiàn)這三駕馬車,則只能很遺憾的說,這只是Java平臺的盜版。

          現(xiàn)在來看看GoogleAndroid平臺。首先,我們必須清醒的承認(rèn),Android使用了Java編程語言,同時還使用了Java MEJava SEAPIs,但是,Android的可執(zhí)行形式與Java平臺的字節(jié)碼形式是兩碼事,同時,使用的虛擬機(jī)與Java平臺的JVM不一樣。因此,在Java MEJava SE環(huán)境下生成的Java字節(jié)碼,在Android上不能成功執(zhí)行也就是情理之中的事情了。

          Google沒有使用標(biāo)準(zhǔn)的JME作為運(yùn)行Java應(yīng)用軟件的引擎,而是自己為Android開發(fā)了名為Dalvik的虛擬機(jī)。開發(fā)人員表示,從技術(shù)角度來看,使用Dalvik既有優(yōu)勢,也有劣勢,但技術(shù)可能不是Google這么做的原因。這可能需要從Google的企業(yè)文化角度去考慮:自由、創(chuàng)新。當(dāng)然,將Dalvik作為避免使用JME所帶來的與Sun之間的許可問題的一種方式也是Google考慮的因素之一。Google不要求手機(jī)廠商許可JME,而是開發(fā)了自己的虛擬機(jī)。DalvikJava字節(jié)碼轉(zhuǎn)換為了Dalvik字節(jié)碼。因此Google可以說Android不是一個Java平臺。

          二、        兼不兼容無所謂?

          Java的兼容性(Compatibility)是Java領(lǐng)域的一面旗幟。Sun就是靠它打下半壁江山,并與微軟平分天下。Java當(dāng)初的豪言壯語,“Write once,run anywhere”令好幾代Java程序員熱血沸騰,但在J2ME平臺開發(fā)的應(yīng)用,要想不改動代碼就run anywhere,難度是很大的。如果要把一個應(yīng)用程序做到讓大多數(shù)的機(jī)型都適用,就要考慮到方方面面,其難度是相當(dāng)大的。

          Sun MicrosystemsJCPJava標(biāo)準(zhǔn)制定組織,Java Community Process,簡稱JCP)非常努力地想實(shí)現(xiàn)這樣的口號,其中最重要的努力就是兼容性測試。于是,當(dāng)軟件提供商(商業(yè)的或是開源的)實(shí)現(xiàn)了Java的標(biāo)準(zhǔn),然后要做的就是交付軟件進(jìn)行兼容性測試,這是軟件提供商獲得“Write once,run anywhere”金字招牌并大言不慚的宣稱自己的軟件具有兼容性的主要辦法。

          這就是大名鼎鼎的TCK(技術(shù)兼容性工具包)誕生的背景。說白了,TCK實(shí)際上是一套及工具,檢測和文檔一體的工具包,通常用于檢測在一特定設(shè)備上Sun公司的KVM技術(shù)的兼容性,確保Sun公司對已確定的標(biāo)準(zhǔn)和規(guī)范的一致性。當(dāng)初TCK可是JCP Java標(biāo)準(zhǔn)中強(qiáng)制的要求之一。

          可以看出,TCK這東西并不簡單。Android,既沒有編譯成Java字節(jié)碼,又不能在JVM上運(yùn)行,能通過TCK這玩意的測試嗎?能與Java MEJava SE兼容嗎?

          眾所周知,JCP負(fù)責(zé)處理和審批各種Java技術(shù)和技術(shù)規(guī)范,將新的Java特點(diǎn)系統(tǒng)化為應(yīng)用程序編程接口(API),所以程序員可以有一個標(biāo)準(zhǔn)的方式調(diào)用新的技術(shù),比如藍(lán)牙技術(shù)或三維圖形。但現(xiàn)有的Java的技術(shù)不能滿足Google公司認(rèn)為對于Android平臺很重要的開放性要求。

          但是不兼容又怎么了?這就是Google的氣魄。天下王道勝者定。

          Google公布Android手機(jī)軟件平臺的開發(fā)工具包時,明確表示該工具包沒有遵守現(xiàn)有的Java標(biāo)準(zhǔn)制訂過程,而是采用了Google自己的方法。于是Sun哭喪著臉說:GoogleAndroid項(xiàng)目會造成數(shù)種互不兼容的Java版本。而Sun負(fù)責(zé)軟件業(yè)務(wù)執(zhí)行副總裁格林更是大言不慚的表示:“任何制造多種平臺的事情都不符合開發(fā)人員的最大利益”,就差沒撂出陳凱歌的名言:“人不能無恥到這種地步”。開發(fā)人員的反饋是:幫助我們解決這一問題。

          Sun委瑣的想與Google合作,號稱是要確保開發(fā)人員無須面對一個分裂的環(huán)境,確保這些平臺和API的兼容,使應(yīng)用軟件能夠被部署在盡可能多的平臺上。而Google卻是不怎么領(lǐng)情,不冷不熱的說,開放手機(jī)聯(lián)盟的成員將有助于使編程人員熟悉其Java變種。

          三、        Android是在繼續(xù)Java ME未竟的事業(yè)?

          在本文中,筆者并非是在揚(yáng)Java而有意在貶Android,事實(shí)上Android是一顆手機(jī)操作系統(tǒng)領(lǐng)域的璀璨的明珠。只是Android像一個叛逆的令狐沖一樣,放著好好的Java MEJava SE標(biāo)準(zhǔn)不遵守,而是要去自創(chuàng)一套乾坤大挪移。Android就是想挑戰(zhàn)Java的口號“Write once,run anywhere”。Android首次避開了Java的老路,闖出了一條嶄新的路子:可以按開發(fā)人員自己的意愿使用Java語言,而不需要老是被JCP所規(guī)定的那些框框架架所框死,這像極了Google的自由、創(chuàng)新的企業(yè)文化。這是否是意味著Android將會走得更遠(yuǎn)呢?

          如果Android按它目前所定的方針及策略能成功的話,那對Java平臺(包括Java SE)將真的是場八級地震。Android給出了一個很重要的信息:Java所定義標(biāo)準(zhǔn)的其實(shí)并不重要,“Write once,run anywhere”其實(shí)也不重要。而這兩點(diǎn)正好是Java平臺的立足之本,而如今Android要顛覆Java的這兩根筋,這不是要了Java的老命?

          因此,如果只是站在Java的角度來看,Android無異于一個搗蛋的壞蛋,但站在Android的角度來看,Java其實(shí)也沒什么,該退的就退吧!

          雖然Android沒有遵循Java MEJava SE的標(biāo)準(zhǔn),但是AndroidJava領(lǐng)域甚至軟件行業(yè)的地震效果將是巨大的。Android將迫使SunJCP重新思考Java MEJava SE標(biāo)準(zhǔn),有可能催生一種新平臺,它比Java SE瘦一點(diǎn),但比Java ME更加健全一點(diǎn)。那才是AndroidJava領(lǐng)域所做出的最大貢獻(xiàn),比起AndroidJava的“傷害”要有意義得多。

          萬事陰陽相扣,Android除了上面的好處外,當(dāng)然會給JCP帶來難以治愈的傷害。因?yàn)?/span>Android的一塊基石就是構(gòu)建不兼容實(shí)現(xiàn)是一種可行的業(yè)務(wù)模型,這就有可能引發(fā)多米諾骨牌推牌效應(yīng),因?yàn)榘駱拥牧α渴菬o窮的,同樣,反而教材的力量也是無窮的,其實(shí)的供應(yīng)商也采用Android這樣的策略,那JCP的標(biāo)準(zhǔn)夢想和兼容性口號將成為歷史。當(dāng)然,這對于敵人的敵人是再好不過的消息了,那個作壁上觀的微軟,那時可能已經(jīng)笑得快合不籠嘴了。因?yàn)椋?/span>Java領(lǐng)域?qū)刮④?/span>.NET平臺的殺傷性武器就是標(biāo)準(zhǔn)化過程(如JCP)及兼容性。如果失去了這兩座屏障,那Java只能來個諸葛亮揮淚斬馬謖或是早點(diǎn)自宮算了。

          事實(shí)上,Android是在繼續(xù)Java ME未竟的事業(yè)。Java ME提供了統(tǒng)一的編程平臺,但是Java ME不能調(diào)用操作系統(tǒng)資源,也沒有提供諸多的應(yīng)用工具,最終Java ME處在一個非常尷尬的位置上。而Android往下直達(dá)操作系統(tǒng)內(nèi)核,往上直通現(xiàn)成的應(yīng)用軟件,例如聯(lián)系人,日歷,地圖,瀏覽器,Android就是手機(jī)應(yīng)用的未來。

          四、        小結(jié)

          Google對無線互聯(lián)網(wǎng)市場垂涎已久,這已經(jīng)是盡人皆知的事情。在公眾場合,無論是Google全球CEO艾里克施密特博士,還是在中國媒體面前的李開復(fù)博士,都毫不掩飾Google對于無線互聯(lián)網(wǎng)市場的向往。Android的推出就像Google在無線互聯(lián)網(wǎng)市場亮出的一把利劍,已經(jīng)是司馬昭之心,路人皆知。而面對老牌的Java MEJava SE對手,Android顯得有一點(diǎn)嫩氣,但又充滿了霸氣,這一場沒有硝煙的手機(jī)操作系統(tǒng)開發(fā)平臺之戰(zhàn),到底鹿死誰手,還需拭目以待。


          評論

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 10:47 by 隔葉黃鶯
          只是手機(jī)領(lǐng)域的開發(fā)而已,何必大呼小叫

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 11:14 by Michael Zheng
          Android 的jme使用了Harmony的類庫

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 11:58 by Edward's
          sun是土鱉,google也不厚道

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 12:11 by wǒ愛伱--咾婆
          別亂七八糟就好...創(chuàng)新是種不錯的思想...不過.要創(chuàng)新的有意義..有真正的意義

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 12:52 by Ruderal
          Android 也好 Sun 也好...

          他們無疑都對Java的發(fā)展提供的動力.

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 13:21 by jeasonzhao
          科銀幾年前就拉人馬作JAVA虛擬機(jī)了,為的就是JAVA的平臺移植性,
          一個庫,相同的原理

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 16:39 by mingj
          當(dāng)然,這對于敵人的敵人是再好不過的消息了,那個作壁上觀的微軟,那時可能已經(jīng)笑得快合不籠嘴了。

          哎,google何必呢

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 16:40 by mingj
          所謂和久必分,分久必合

          Android 也不是能長期一統(tǒng)江山的

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-29 22:45 by 千里冰封
          Android算什么東西

          # re: Android動了Java的奶酪?  回復(fù)  更多評論   

          2007-12-30 08:53 by Matthew Chen
          據(jù)說核心api也不是一樣的,jfc本身是一個一棧式的api庫,底層基于的jni是固有的,android并不是從底層照搬這種類層次結(jié)構(gòu),但Harmony作為遵循java標(biāo)準(zhǔn)的虛擬機(jī)實(shí)現(xiàn)必須提供標(biāo)準(zhǔn)的api實(shí)現(xiàn),所以android從api級別也不是java程序員可以容易過渡來使用的,基本上說,android只是借鑒了java的語法和一些api接口樣式,本質(zhì)上是完全不同的語言平臺。
          另外,樓主寫得實(shí)在有點(diǎn)言過其實(shí)了,google的android面向的是手機(jī)平臺,追求的是自由和創(chuàng)新,那它在未來必然也會因?yàn)閖ava語法上的對底層不友好而采用和.net同樣的方式——指針,然而基于Harmony的實(shí)現(xiàn)應(yīng)該不支持這樣的做法,到最后,Dalvik必然會脫出Harmony的束縛,成為徹頭徹尾的另一個.net, android有點(diǎn)掛羊頭賣狗肉,它影響不了java。
          主站蜘蛛池模板: 武鸣县| 新晃| 海城市| 报价| 镇赉县| 红原县| 濉溪县| 临城县| 兴国县| 洛扎县| 永年县| 繁昌县| 宝山区| 新建县| 普陀区| 磐安县| 讷河市| 家居| 舟山市| 海淀区| 阿瓦提县| 寻甸| 越西县| 方城县| 丰原市| 芦山县| 咸宁市| 扎兰屯市| 区。| 镇江市| 华宁县| 阿鲁科尔沁旗| 灵宝市| 江源县| 海口市| 阿克| 固原市| 台中县| 阜阳市| 莱州市| 鲁山县|