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