[譯] google會背叛並殺死Android嗎?

ronaldong發表於2018-05-25

[譯] google會背叛並殺死Android嗎?

Android是目前為止世界上最流行的平臺,支援超過20億臺移動裝置。毫無疑問,這是一個巨大的成功。

儘管如此,我懷疑Android的發展前景可能不如過去那麼樂觀。

我第一次產生這種想法大約始於一年前。當時谷歌宣佈Kotlin程式語言將正式支援Android開發。 這個公告引發了Android開發者們極大的熱情,但我卻無法加入這一浪潮。

我試圖去了解Kotlin將如何與Android互惠互利,但我所能看到的僅僅是一個已經分散、混亂的開發生態系統的進一步碎片化。

我曾希望谷歌會與我們分享更多的資訊,但他們沒有。他們只是說Kotlin得到了官方的支援,因為它是“更好的”開發語言,會集中精力推廣它,並將Kotlin示例新增到了官方文件中。

一個最直接明顯的問題 -Java在Android上的路線圖是什麼? - 仍未得到答覆。

我為什麼會寫這篇文章:

有些時候,我想與我部落格的讀者們分享一些悲觀的想法。 所以,我寫了一篇文章:通過一系列的量化分析來說明Kotlin的引入可能會對Android產生副作用。 令人驚訝的是,這篇文章吸引了不少讀者的關注並收到了很多反饋。

我分析了這些反饋,並指出大家對於JetBrains為什麼要發明和推廣Kotlin似乎存在著誤解。 許多開發人員專注於技術方面,卻忘記了JetBrains如果沒有明確的商業模式就不會在Kotlin上投入如此巨大的資源。沒問題,我也是這樣寫的。

下一步我想分享一些我認為Google會採用Kotlin的原因,但我陷入了數月的困境。

最開始我認為Google採用Kotlin是因為他們與Oracle在Android上使用了Java這一問題上存在持續的法律糾紛。我覺得Kotlin可以幫助谷歌擺脫這個糾紛。然而,在詳細研究了甲骨文與谷歌的訴訟之後,我覺得我想錯了。

我的心中逐漸產生了另一種更可怕的假設 - 谷歌採用Kotlin並傷害我們以更好地對抗甲骨文的訴訟。

接下來我將與你們分享我這個可怕的推測。

請記住,這篇文章是我係列文章中的第三篇。 它建立在我的第一篇文章的內容基礎上,這篇文章解釋了谷歌為什麼採用Kotlin,第二篇文章總結了甲骨文與谷歌的訴訟。 我假設你已經閱讀了本系列的前兩篇文章。

Google negotiated Java license with Oracle:

甲骨文與谷歌官司中的一個令人驚訝又覺得有趣的證據是軟體工程師Tim Lindholm給“Android之父”安迪魯賓傳送的一封電子郵件:

[譯] google會背叛並殺死Android嗎?

請允許我解釋下這裡到底發生了什麼事情:

也就是說,Alan Eustace認為從Android裡移除Java API 是很難威脅到Safra Katz的。 但是我們認為在談判中提出Java API 的替代方案是有價值的,這樣我們就能獲得使用Java API 的更好的條款和價格。 在我們看來,Obj-C提供了一種可信的替代方案。 我們想知道的是你為什麼討厭這個想法的原因,不管你認為我們在理解這個方案時錯過了什麼。

這裡提到了兩個人:Google高階執行官Alan Eustace和Oracle的高階主管Safra Katz。 這封電子郵件的日期大約是在Oracle收購Sun後大約六個月的時間,在Oracle起訴谷歌之前大約兩個月。

在我對Oracle與Google訴訟的評論中,我提到Google肯定知道Java API是受版權保護的,並且獲得了Sun的許可。事實證明,在Sun被收購之後,他們還與甲骨文進行了談判。

請注意Google是如何威脅Oracle要從Android中移除Java API 的。 他們並不打算真正這麼做,但他們認為這樣的威脅可以讓他們獲得更好的Java使用許可證條款和價格。 現在請記住這個策略。

這封電子郵件中最引人注目的部分是:

(拉里和謝爾格)實際上要求我們去做的是調查替換Android和Chrome中的java語言的技術方案。 我們已經完成了其中一些,並認為他們都很糟糕。

我在解釋Google為什麼採用Kotlin時,描述了谷歌的一位中層管理人員和一位高管之間關於是否採用Kotlin的虛擬對話。 我用它來告訴你,谷歌之所以採用Kotlin是因為它“更好”或者“開發者社群要求他們這麼做”這種想法是荒謬的。我還表示,Kotlin的採用可能需要Google的高層管理人員,甚至是董事會的批准。

現在你知道了,谷歌創始人拉里佩奇和謝爾蓋布林甚至在甲骨文起訴谷歌之前就直接參與了Android中使用了Java語言這個問題。 今天,當Google處於數十億美元的訴訟中時,我認為Google公司裡的人是不會討論Kotlin是一種“更簡潔的程式語言”這個話題的。

我們得出結論,我們需要根據我們的需求通過談判協商來獲得Java的使用許可協議。

但是,但是,但是......谷歌這麼多年來一直說Java API是不受版權保護的。 他們說,貪婪的甲骨文沒有理由起訴他們!那麼他們為什麼會得出結論:他們需要通過談判來獲得Java的使用許可協議呢?難道是谷歌急於向甲骨文捐贈數億美元,或者是他們向我們和法院撒謊嗎?

谷歌曾經在訴訟中辯護稱他們認為API的版權將“終結我們今天所知的軟體行業”。 事實證明,早在甲骨文起訴Google之前,API就有了版權概念,正因為如此,軟體行業才會發展至今。

OpenJDK:

Tim Lindholm在撰寫上述電子郵件的時候OpenJDK已經三歲了。 Google是可以將這個開源的Java API實現整合到Android中的。 但是,頂級的Google高管尋找到了Java的替代品,並試圖操縱Oracle高管給予他們折扣。 本電子郵件中甚至沒有提到要把OpenJDK作為選項。

為什麼谷歌不直接免費使用Oracle的開源OpenJDK,而是去與甲骨文談判獲得Java API的使用許可證?

OpenJDK是根據GPL + Classpath Exception獲得許可的,而Android主要是在Apache下獲得許可的。 將OpenJDK整合到Android並不能幫助到谷歌,谷歌高管對此非常瞭解,因此在這次討論中甚至沒有提出這個選擇。

然而,大約六年之後,隨著Android Nougat的釋出,OpenJDK被引入了Android。 是什麼讓Google改變主意?

OpenJDK和Android的許可協議都不會改變,所以OpenJDK並不是Google的安全選擇。 只是在那個時候,谷歌已經實在是沒有辦法去說服美國聯邦巡迴上訴法院相信Java API是沒有版權的。最高法院拒絕了谷歌的請求,要求審理此案。與此相比,與OpenJDK相關的風險不再那麼大,所以Google決定整合它。

但是請不要誤會 - 谷歌與Android中的OpenJDK相關的風險仍然很大。

首先,甲骨文可以向法院請求Android Nougat版本之後的系統禁止使用OpenJDK,甲骨文肯定會贏得訴訟,並獲得禁令。 即使谷歌能夠說服法庭需要進行另一項單獨的審判來確定Android Nougat版本之後的系統的侵權損害賠償,甲骨文很可能不會退縮。

雖然谷歌有機會擺脫Android中的OpenJDK,但它不可能僅憑這一點就希望能打贏數十億美元的官司並掌控Android的未來。

所以,谷歌看上了Kotlin。

Kotlin如何幫助Google:

還記得Google在2010年與Oracle進行Java許可證談判時使用的策略嗎? 他們試圖證明他們可以把Android遷移到別的技術上,希望甲骨文能夠給予他們折扣。 今天,我們知道它並不像預期的那樣有效。

我的一個推測是:谷歌想通過Kotlin來進行一次炒作,藉此來證明他們這次是認真的。這樣的話,如果谷歌決定與甲骨文達成和解,這可能是和解談判的一個很好的籌碼,甚至可能是唯一的籌碼。因為就這起訴訟而言,谷歌似乎落於下風。

我個人認為這個解釋的可能性非常低。甲骨文明確表示,他們希望獲得公平的Android份額,但谷歌曾用Android做過的所有事情都表明他們不會讓任何人蔘與進來。看起來甲骨文和谷歌的地位相差太遠,無法成為一個可行的解決方案選項。

即使Kotlin只是一個談判的的籌碼,谷歌仍然需要證明他們可以將Android從Java遷移到Kotlin。

除非…

從理論上講,谷歌可以重新實現Kotlin API以消除Android對Java API的依賴。 如果Java API不再使用,Google將能夠從Android中刪除OpenJDK。

Android會在刪除OpenJDK後放棄對Java應用程式的支援嗎? 我不這麼認為。

以Facebook為例,他們的程式碼庫中很可能早就已經積累了一百萬行Java程式碼。 將如此龐大的專案遷移到Kotlin將是一項非常困難和長期的工程,這將耗資數百萬美元。 在可預見的未來,我認為Facebook不會達到這個水平。Google是不可能放棄對類似於Facebook等其他應用程式的支援的,因此它別無選擇,只能繼續使用Java來支援Java應用程式。

在刪除OpenJDK之後,Andorid可以在編譯之前將Java編譯為Kotlin,或直接編譯為使用Kotlin API的程式碼,從而解決Java API缺失的問題。這實現起來並不困難。

所以,谷歌採用Kotlin是為了從Android平臺移除有爭議的Java API。

Google的世界末日場景:

據我所知,如果甲骨文勝訴,理論上,他們可以在Android中獲得份額,無論它是否會繼續使用Java API。

甲骨文表示,Google侵犯了他們的版權,並創造了一個基本上將Java從移動市場中淘汰的競爭產品。 即使谷歌此時刪除侵權部分,法院仍可以判定谷歌需要對甲骨文核心業務的長期損害負責。在這種情況下,即使侵權行為停止,甲骨文也可以獲得Android的份額。

這對谷歌來說是一個世界末日的場景,因為甲骨文將獲得Android的份額,谷歌將無法做任何事情。

除非......不會再有Android。

Fuchsia:

關於Android的一個最神祕的話題是Google的新“祕密”作業系統Fuchsia是否真的打算取代Android。

如果Fuchsia真的取代了Android,這對於Android生態系統的參與者來說影響將是巨大的,但Google不會與我們分享任何資訊。我和其他許多Android開發人員向Google的官方代表詢問了Android和Fuchsia的路線圖,但據我所知,沒有人能夠回答這個問題。

所以,讓我回答一下關於Android的一個大問題:什麼是Fuchsia?

Fuchsia是谷歌給自己買的的一份保險。如果谷歌最終被判侵權,甲骨文將獲得Android生態系統或利潤的份額,那麼Google將殺死Android並遷移到Fuchsia。

但是,Fuchsia要想取代Android,至少必須滿足三個前提條件:

  1. Fuchsia必須擁有足夠多熟練的開發人員,以形成開發者生態系統。
  2. 必須有裝置能夠真正執行Fuchsia。
  3. Fuchsia必須支援Android應用程式。

我相信取代一個世界上最流行的作業系統將遠不止於以上三個條件。 我選擇專注於這三個先決條件的原因是:他們中的每一個都是強制性的,而且可能需要很長的時間才能實現。

所以,即使谷歌決定殺死Android轉而去支援Fuchsia,我們仍然會有好幾年的時間,因為在短時間內無法實現上述目標。

除非... Google今天已經在努力滿足這些條件。

Flutter:

Flutter是谷歌新發布的移動開發SDK,支援Android和iOS。它是用一種名為Dart的語言編寫的,它在底層不使用Java API。

Steve Yegge(一個將會盜取谷歌的Android系統的人)曾在他的帖子中說過這樣一段話:

谷歌是不會被競爭對手所超越的,他們回答說:“哦,是嗎?你是不可能與我們競爭的,因為我們要與自己競爭!”,於是他們推出了Flutter,說這是一種與原生Android競爭的技術棧,但是他們沒有完完全全的做到這一點,只是Android團隊拒絕承認罷了。

這篇文章精確地表達了Flutter所處的荒謬環境。也就是說,我不認為Google確實在與自己競爭。

那麼,讓我回答另一個與Android相關的問題:Google為什麼啟動並推廣Flutter?

Flutter也是用於編寫Fuchsia應用程式的官方SDK,這不是什麼祕密。 如果他們決定在有朝一日殺死Android而選擇Fuchsia,鑑於谷歌需要建立一個由熟練的開發人員組成的生態系統,那麼讓Android開發人員提前瞭解Fuchsia上的應用程式開發是有道理的。

Project Treble:

谷歌的Project Treble的官方文件的開頭有這樣一段話:

The Android 8.0 release includes Project Treble, a major re-architect of the Android OS framework designed to make it easier, faster, and less costly for manufacturers to update devices to a new version of Android. Treble is for all new devices launching with Android 8.0 and beyond (the new architecture is already running on the Developer Preview for Pixel phones).

因此,Google投入了相當大的資源,以減少裝置製造商們更新裝置至新版本的Android系統的成本。 哇,Google對這些原始裝置製造商真的是太好了。

你已經知道會發生什麼,對吧?

事實上,我可以向您解釋Google是如何抓住每一次機會去為OEM廠商提供幫助的。 我可以告訴你,原始裝置製造商停止釋出舊裝置的更新與Treble無關。 我甚至可以告訴你,Treble並不是真的與這一切有關。

說回到Fuchsia。

Android生態系統深受碎片化問題的困擾。 我在這裡說的並不是Flutter所導致的Android開發方式的碎片化, 我指的是那些影響Android系統本身以及執行它的硬體的碎片化問題。

每一裝潢置製造商都佔據一定的Android市場份額,他們可以根據其需求對Android系統進行更改。例如,裝置製造商可以在Android系統裡新增使其相機拍攝出來的影象超清晰的專有程式碼。 如果底層硬體暴露出一些特殊的功能,那麼它同樣需要在特定的Android系統裡考慮到這些。

所有這些問題都是由於這些變化會導致不同的Android版本之間不相容。三星手機將無法執行Pixel的的Android版本和副版本。這使得在同一臺裝置上切換不同版本的Android系統成為了不可能,更不用說完全不同的作業系統了。

如果谷歌這時候將Fuchsia釋出出來,那麼就沒有裝置可以執行它了。 Fuchsia可能需要數月甚至數年才能得到硬體製造商的正確支援。

因此,用另一個作業系統來替換一個已有的作業系統是非常困難的任務。

幸運的是,Google對軟體工程的基本定理是這樣描述的:

We can solve any problem by introducing an extra level of indirection.

目前還不清楚這種“indirection”與Project Treble有何關係。

因此,Project Treble並不是關於如何幫助硬體製造商或者關心Android使用者的。 它完全是為了確保硬體製造商標準化他們的平臺,讓他們為Fuchsia做好準備。 我不知道Google是否計劃將Fuchsia推向執行Android的裝置。然而,很顯然,他們希望移動裝置能夠在啟動時支援Fuchsia。

我認為我可以肯定地說今天製造的絕大多數裝置都已經支援Fuchsia。

此時,您可能傾向於指出Android和Fuchsia之間的技術差異。這些作業系統的確基於不同的技術棧。不過,我可以向你保證,谷歌有數十億條理由讓Fuchsia與Android裝置相容。

因此,前面提到的第二個先決條件已經滿足了。

Android applications on Fuchsia:

為了殺死Android,Google需要確保Fuchsia支援Android應用程式。 這一點不需要我過多的解釋。

我計劃這部分內容的時間比較長,因為我需要解釋Fuchsia如何支援Android應用程式。 我想表明這不是不可行的,谷歌可能已經朝著這個方向前進。

幸運的是,我不再需要解釋這些了。 我可以向你展示9天前的這條推文:

[譯] google會背叛並殺死Android嗎?

說實話,我還沒有認真研究過這段提交的程式碼,我不完全確定它與我在研究的問題是完全相關的。但是,我不認為這是一個巧合。

那麼,前面提到的第一個和第三個先決條件似乎也已經滿足了。

谷歌何時會殺死Android:

Android社群裡有很多淡化Kotlin,Flutter和Fuchsia的聲音。 我個人認為,這種情況絕對至關重要,並會給Android生態系統的所有參與者帶來巨大的個人和商業風險。

在這篇文章中,我與你分享了我思考這個問題的過程 :從 谷歌為什麼採用Kotlin? 到Android的Java的路線圖是什麼? 然後到在Android上正在發生著什麼事情?

現在我認為最重要的問題是: Google何時會殺死Android?

從技術的角度來看,我估計谷歌可以在一兩年內用Fuchsia代替Android。

但是請記住,這一過程與技術無關,也與使用者、開發者、裝置製造商無關。 唯一起作用的因素是谷歌希望避免侵犯版權的責任,如果甲骨文贏得了訴訟的話。

因此,法庭處理這起訴訟的程式才是決定Android命運的時間表。

如果最高法院同意聽取案件並恢復聯邦巡迴法院的一項決定,那麼Google甚至可能關閉Fuchsia和Flutter專案,而Android將會依然生存下去。

Is Oracle that evil:

在這一點上,你可能傾向於把所有的這一切怪罪於甲骨文。至少這是我最初的反應,因為我認為Oracle是軟體行業的魔鬼。

然後,我問自己:過去甲骨文對我的職業造成了什麼傷害?

似乎沒有,作為Android開發人員,我甚至沒有參與過Oracle的生態系統。

但是為什麼我對甲骨文很反感呢?

我認真思考了一下,並得出了一個結論:我即將成為谷歌公關的犧牲品。 多年來,我一直聽到一些甲骨文是如何使壞和做惡的的事情,但我從來沒有停下來認真想過這個觀點。

在瞭解了甲骨文與谷歌官司的細節之後,我確信甲骨文是正確的。 法院才是那個判定谷歌是否真的有罪的人,但毫無疑問有足夠的證據證明甲骨文的行為是正當的。

然後,我想到了如果Google在2005年或2006年或者是2010年從Sun獲得了使用Java Api的許可證,Android生態系統將會是什麼樣子。它會對我們開發者、裝置製造商以及最重要的Android使用者造成什麼危害? 我實在想不出。

但是,我確實看到了Google的這一決定剝奪了我們所有人的許多潛在利益。想象一下,Sun或Oracle是Android生態系統的一部分。

那麼我們就不會在等待多年之後才能在Android上支援Java 8。 我們將成為更大的Java生態系統的一部分,並將獲得所有相關的好處。 實際上,我們將成為最大的Java開發人員群體,並且可以影響整個Java生態系統的演變。

我曾經認為甲骨文是邪惡的。今天,我認為Android開發者,原始裝置製造商和使用者錯過了許多,因為谷歌沒有將Oracle視為合作伙伴,而這一切都是由於Google的貪婪所造成的。實際上這是一個非常合理的要求,因為如果您閱讀了Oracle與谷歌訴訟中的證據,就會立刻明白Sun的Java生態系統是Android成功的主要因素。

結束語:

在最近的三篇文章中,我與您分享了一些關於Android的現狀和未來的非常令人不安的理論。

這些理論可能是全部錯誤的或者是部分錯誤的。

我的這些想法解釋了過去幾年Android發生的一切,並回答了今天最棘手的問題。 也就是說,一個好的理論不僅解釋過去,而且能預測未來。

一個預言已經實現,因為看起來Google確實正在努力使Fuchsia支援Android應用程式。

下面是我的的一些額外的預測:

  1. Kotlin不會使用Java API
  2. OpenJDK將從Android中刪除
  3. Compiled Java code will either use Kotlin’s APIs or be directly compiled into native code
  4. 谷歌將繼續推廣Flutter
  5. Google可能會試圖在Flutter中使用Kotlin以進一步推廣Kotlin
  6. 支援Treble的Android裝置將能夠執行Fuchsia
  7. Android將會被殺死

我不相信上述所有的預測都會成真。然而,如果你看到1至6中的某個預測實現了,那麼請注意它增加了預測7實現的可能性。

Android生態系統可能還會有其他的發展,我會盡力關注他們。在這一點上,你可能想知道該怎麼做,我也不知道。

正如我所說,根據這一理論,Android生態系統的每個參與者都面臨著個人或者業務風險,它取決於您參與的具體情況。

雖然我不能提出具體的建議,但我認為以下兩個建議可能是有用的:

  1. 考慮你個人的風險因素
  2. 對谷歌的官方公告持懷疑的態度並批判性地思考。

相信我,我也希望我的整個理論最終是廢話。

相關文章