這單公案其實(shí)屬于美國(guó)人民內(nèi)部矛盾,屬于逐漸式微的老派數(shù)據(jù)庫(kù)霸主對(duì)移動(dòng)計(jì)算時(shí)代風(fēng)光無(wú)兩當(dāng)紅炸子雞的濃濃惡意:
兩家公司自2010年以來(lái)一直就該爭(zhēng)端在訴諸法庭,當(dāng)時(shí)甲骨文起訴谷歌時(shí)聲稱后者在它的安卓(Android)移動(dòng)軟件中使用了甲骨文的Java軟件中部分代碼。此案現(xiàn)在已經(jīng)經(jīng)歷了兩次聯(lián)邦法院審判,并且地方法院的判決還曾遭遇上訴法院推翻,該案還曾在美國(guó)最高法院有短暫逗留。甲骨文在該案中尋求來(lái)自谷歌高達(dá)90億美元的侵權(quán)損害賠償。
2010年1月份,甲骨文完成了對(duì)Sun微系統(tǒng)公司的收購(gòu),后者是Java程序語(yǔ)言及平臺(tái)的開(kāi)發(fā)商。那年的8月份,甲骨文起訴谷歌,聲稱谷歌的安卓(Android)使用Java相關(guān)技術(shù)是對(duì)甲骨文版權(quán)和專(zhuān)利的侵犯。2012年,華盛頓特區(qū)地方法院的判決有利于谷歌,聲稱所謂的Java API不屬于版權(quán)。不過(guò)對(duì)于谷歌來(lái)說(shuō)不幸的是,一家上訴法院推翻了那次判決,并且美國(guó)最高法院拒絕對(duì)該案進(jìn)行聽(tīng)訟。
Google當(dāng)年為了加速發(fā)布安卓系統(tǒng),并且創(chuàng)造一個(gè)對(duì)開(kāi)發(fā)者友好的開(kāi)發(fā)環(huán)境,選擇了Java作為手機(jī)操作系統(tǒng)上應(yīng)用程序的開(kāi)發(fā)語(yǔ)言(Sun: 歡迎使用?。粗械氖驱嫶蟮拈_(kāi)發(fā)人員基數(shù)。Java面世20年,在服務(wù)器領(lǐng)域大顯神威,工業(yè)標(biāo)準(zhǔn)可不是說(shuō)著玩兒的。大把程序員靠java吃飯,Google推出基于Java的SDK,等于一次性向所有Java背景的程序員敞開(kāi)大門(mén),相比之下“一次編碼,處處運(yùn)行”的語(yǔ)言特性就顯得不是那么重要了——好吧,除了安卓也沒(méi)別的平臺(tái)讓你運(yùn)行。
Java很好很強(qiáng)大,但在安卓上沒(méi)用了
08年那會(huì)兒搞移動(dòng)應(yīng)用開(kāi)發(fā),除了蘋(píng)果用的Objective C,就是諾基亞Symbian上基于C++的Qt框架,再有就是那一坨運(yùn)行在功能機(jī)上的嵌入式J2ME了。當(dāng)時(shí)Google除了自建一套Java虛擬機(jī),并沒(méi)有更好地選擇。
而今天就不一樣了:首先,“一次編寫(xiě),多端發(fā)布”的理念已經(jīng)深入人心,對(duì)圖形效果沒(méi)有特別要求的應(yīng)用,會(huì)選擇React Native進(jìn)行開(kāi)發(fā),經(jīng)過(guò)編譯后生成的都是原生系統(tǒng)控件,和使用Android Studio/Xml設(shè)計(jì)出來(lái)的原生UI毫無(wú)二致(感謝Facebook!)。
其次,對(duì)于占據(jù)移動(dòng)應(yīng)用半壁江山的游戲,Unity3D/Cocos2D等游戲引擎,把通用app之外的游戲/娛樂(lè)類(lèi)高交互性app給包了圓,和React Native一樣,使用這些引擎,都只需要用一種編程語(yǔ)言寫(xiě)一遍代碼,就有了多個(gè)平臺(tái)發(fā)布的能力,官方、社區(qū)支持都極為專(zhuān)業(yè)和活躍。用Java寫(xiě)的游戲引擎如AndEngine基本都無(wú)人問(wèn)津。
再次,隨著移動(dòng)設(shè)備性能逐漸趕上臺(tái)式機(jī):2.2G CPU + 8G RAM,HTML宿主webview的體驗(yàn)已經(jīng)和原生系統(tǒng)極為接近,Reactive Native 說(shuō)是用javascript開(kāi)發(fā),但Virtual Dom/redux/flux還是有一定學(xué)習(xí)成本。Ionic的出現(xiàn),使得原來(lái)大批前端工程師——熟悉js/html/css——就可以無(wú)縫遷移到app開(kāi)發(fā)中來(lái),這一批開(kāi)發(fā)者數(shù)量和當(dāng)年的Java基本盤(pán)比起來(lái),多了何止一個(gè)數(shù)量級(jí)。
未來(lái)?用啥都好
所以未來(lái)移動(dòng)開(kāi)發(fā)領(lǐng)域,除了維護(hù)遺留系統(tǒng),基本沒(méi)Java什么事兒了。
有小道消息說(shuō)Google準(zhǔn)備轉(zhuǎn)投已經(jīng)開(kāi)源的Swift,如果是真的,蘋(píng)果也樂(lè)得看到自己的親生兒子大展鴻圖。而Google自己的親兒子Go,也被開(kāi)發(fā)者寄予厚望。哪種語(yǔ)言都好,不過(guò),原生開(kāi)發(fā)語(yǔ)言SDK,還有多少開(kāi)發(fā)者真的需要呢?