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

Android是目前爲止世界上最流行的平臺,支持超過20億臺移動設備。毫無疑問,這是一個巨大的成功。java

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

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

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

我曾但願谷歌會與咱們分享更多的信息,但他們沒有。他們只是說Kotlin獲得了官方的支持,由於它是「更好的」開發語言,會集中精力推廣它,並將Kotlin示例添加到了官方文檔中。markdown

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

我爲何會寫這篇文章:

有些時候,我想與我博客的讀者們分享一些悲觀的想法。 因此,我寫了一篇文章:經過一系列的量化分析來講明Kotlin的引入可能會對Android產生反作用。 使人驚訝的是,這篇文章吸引了很多讀者的關注並收到了不少反饋。app

我分析了這些反饋,並指出你們對於JetBrains爲何要發明和推廣Kotlin彷佛存在着誤解。 許多開發人員專一於技術方面,卻忘記了JetBrains若是沒有明確的商業模式就不會在Kotlin上投入如此巨大的資源。沒問題,我也是這樣寫的。less

下一步我想分享一些我認爲Google會採用Kotlin的緣由,但我陷入了數月的困境。編程語言

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

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

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

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

Google negotiated Java license with Oracle:

甲骨文與谷歌官司中的一個使人驚訝又以爲有趣的證據是軟件工程師Tim Lindholm給「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天前的這條推文:

說實話,我尚未認真研究過這段提交的代碼,我不徹底肯定它與我在研究的問題是徹底相關的。可是,我不認爲這是一個巧合。

那麼,前面提到的第一個和第三個先決條件彷佛也已經知足了。

谷歌什麼時候會殺死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. 對谷歌的官方公告持懷疑的態度並批判性地思考。

相信我,我也但願個人整個理論最終是廢話。

相關文章
相關標籤/搜索