1. 程式人生 > >鏖戰九載,Google 是否會因 Oracle 而棄用 Java?

鏖戰九載,Google 是否會因 Oracle 而棄用 Java?

秋季 兼容 ima range fbo 互操作 proc array 開放

技術分享圖片

在過往的九年間,Google 因旗下全球第一大操作系統 Android 中是否合理使用 Java 的問題,已經與軟件巨頭 Oracle 大戰了三百回合,但一直沒得到最終的定論。

而如今,隨著 Google 官方博客中一則名為《Oracle v. Google and the future of software development》聲明的發布,標誌著這一案件的最後一戰即將打響。在聲明中,Google 全球事務 SVP 兼首席法務官 Kent Walker 表示“我們請求美國最高法院審查 Google 與 Oracle 在軟件接口使用方面長期存在的版權糾紛。案件的結果將對整個計算機行業的創新產生深遠的影響。”

這意味著 Google 已經向美國最高法院提出審理與 Oracle 之間有關 Java 版權問題的請求。其中如果最高法院接受案件審理,那麽 Google 或許還有翻盤 Oracle 的可能;但如果最高法院拒絕審理此次案件,那麽 Google 只能執行去年 3 月份美國聯邦巡回上訴法院的裁決結果,即 Google 使用 Java 開發 Android 系統的行為的確侵犯了 Oracle 的版權,需向對方賠付 88 億美元。

回顧正常案件,這看起來僅是部分代碼的事件為何會演變成為如今這般情景?Oracle 的勝訴又將帶來怎樣的影響?最終是否會導致 Google 棄用 Java?全球的軟件開發者又該何去何從?

全球第一大操作系統 Android:樹太大招來了強風

提及這一事件的根源,其實還得從 Google 的 Android 系統講起。

21 世紀以來,各大科技巨頭暗中發力,為移動互聯網的新紀元做足了準備,其中 Google 也不例外。2005 年,Google 在低調地將成立僅 22 個月的高科技企業 Android 及其團隊收購後,迫切希望以此為契機能打破塞班統治的手機操作系統市場格局,搶占移動互聯網下智能手機領域的先機。然而在美好的願景之下,如何才能突破常規,打造出更出彩的操作系統生態?

當然首要因素是需要適用於諸多的開發者及用戶,而這前提就需要 Google 去選擇一門成熟且極具前景的編程語言為基礎。

在彼時的環境之下,和廣泛應用於桌面系統軟件開發的 C++、非面向對象的 C 語言、社區生態不夠龐大的 Python 等語言相比,具有良好的跨平臺特性以及擁有成熟生態系統的 Java 無疑中成為了 Google 最佳的選擇。

不過值得註意的是,當時的 Google 並沒有直接將 JVM 直接搬到 Android 上,而是自己使用 Java API 設計了一個能夠運行 Android 應用程序的虛擬機——Dalvik,在這過程中,Google 並未向當時 Java 的擁有者 Sun 公司獲取 API 的授權,而正是因此,才引發了後來兩大巨頭有關 Java 的版權之爭。

Google 與 Oracle 之間的 9 年之爭

2009 年,純軟件先驅 Oracle 以 74 億美元收購了 Sun 公司、並接手了 Java 的擁有權。然而令人唏噓不已的是,第二年即 2010 年 8 月,Oracle 就以一紙文書將 Google 告上了法庭,稱迅速占領移動操作市場的 Android 系統侵犯了七項 Java 版權和專利,同時要求 Google 賠償 26 億美元。雖然 Oracle 律師 Annette Hurst 曾正面回應,Oracle 收購 Sun 公司並不是為了對 Google 發起版權訴訟。但是在收購第二年就急切地提出訴訟,這一行為免不了讓業界人士的猜想一番。

對此,Oracle 方堅持的態度是,Google 明知道 Java API 是受版權保護的,還故意而為之,目的就是為了讓傳統的 Java 程序員能很好地往 Android 平臺過渡,為 Android 的生態帶來豐富的應用程序。與此同時,Android 背靠 Java 這棵大樹,才會大獲成功,為 Google 帶來了巨大的商業價值。簡而言之,沒有 Java,Android 不會有今天的地位。

而另一面,Google 則一直強調對於開源的 Java,自由使用 API 是業界的正常做法,暗示著自己並不知曉 Java API 是具有版權保護的。

不過,對 Google 頗為不利的是,Oracle 在隨後的對弈中,收集到了一封Android 之父 Andy Rubin 郵箱的企業內部郵件,其中提到 Google 內部試過替 Android 和 Chrome 尋找 Java 以外的替代方案,但那些替代方案都很糟糕,所以需要協商 Java 的授權問題。這意味著 Google 私底下都是知曉 java.lang 是受版權保護的。

在此不利的情況之下,2011 年 3 月,Google 聘用了 Java 的創始人 James Gosling 來為自己站臺。而自此之後,Google 和 Oracle 之間的 Java 侵權事件也開始愈演愈烈:

2011 年 9 月,Google 和 Oracle 雙方 CEO 第一次庭外和解失敗。
2012 年 3 月,Oracle 不接受 Google 280 萬美元賠償方案。
2012 年 5 月,陪審團認為 Google 使用了 9 行範圍檢查的 Java 代碼構成侵權,代碼如下:
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
}
同月,William Alsup 法官推翻了陪審團認為 Google 侵權的意見,稱 API 不應該受版權保護。隨後,加州北區法院裁定 Android 系統沒有侵犯專利,Java API 不存在版權,Google 贏得短暫勝利。
2012 年 10 月,Oracle 不滿判決結果,於是上訴至美國聯邦巡回上訴法院。
2014 年 4 月,美國聯邦上訴法院判定 API 受版權保護,Google 侵權,須賠償,Oracle 贏得勝利。
2014 年 10 月,Google 不服判決上訴至美國最高法院,請求高院介入。
2015 年 6 月,美國最高法院駁回了 Google 在軟件版權訴案中提出的上訴申請,維持原先的判決。
2015 年 10 月,案件退回美國地區法院,由 William Alsup 法官再次審理。
2016 年 4 月,雙方庭外和解會議再次失敗。
2016 年 5 月,舊金山聯邦法院對該案復審。
2018 年 3 月,美國聯邦巡回上訴法院裁決,Google 侵犯了 Oracle 的版權。
2018 年 8 月,Google 提出上訴,但美國聯邦上訴法院宣布拒絕重新審理此案。

Java 侵權案升級為行業的 API 版權之爭

時針走到了現在,也正如文章伊始所述,Google 寄最後的希望於最高法院。但無論最高法院受理與不受理,這將都是一場有關 API 的版權論。

作為將復雜軟件系統結合在一起的粘合劑——應用程序接口,Google 全球事務 SVP 兼首席法務官 Kent Walker 在聲明中表示道,“標準化的軟件接口推動了軟件開發的創新。它們讓計算機程序可以相互交互,讓開發者能夠輕松地基於不同平臺構建技術。”

同時,Kent Walker 認為:

隨著智能手機應用程序的普及,我們往往會忽略開發者在各種不同平臺上創建應用程序的難度。而在 2008 年,Google 發布開源的 Android 平臺改變了這一現狀。它幫助開發者克服了更小的處理器、有限的內存和更短的電池壽命帶來的挑戰,同時為智能手機開發提供創新的特性和功能。最終帶來雙贏,即開發者可以更方便地構建新的應用程序,制造商可以創造出優秀的新設備,由此產生的競爭可以使消費者既享受更低的價格,也可以獲得更多的選擇。Google 根據計算機行業長期接受的重復使用軟件接口的做法構建了 Android,這些接口提供了一組命令,可以輕松實現常用功能,譬如按下“Ctrl”+“P”鍵盤快捷鍵,就可以觸發打印功能,使打印變得容易。Android 開創了一個變革性的新平臺,同時讓數百萬 Java 程序員使用他們現有的技能來創建新的應用程序。而 Java 的創造者支持 Android 的發布,並稱它“給(Java)社區的發展安上了火箭。”但在 2010 年收購 Java 之後,Oracle 起訴 Google 使用這些軟件接口,試圖通過事後改變軟件開發規則且從中獲利。Oracle 的訴訟聲稱自己有權控制軟件接口即軟件開發的基石,由此也能夠鎖定投資於學習免費和開放 Java 語言的開發者社區。舊金山法院最初裁定,在這種情況下,軟件接口不具有版權,但該決定後來被駁回。陪審團曾一致地認為 Google 對接口的使用是合法的合理使用,但該決定後來同樣被否決了。除非最高法院糾正這兩個否決,否則這個案例將終止開發者自由使用現有軟件接口為消費者構建新一代計算機程序的傳統能力。就像我們都學會使用計算機鍵盤快捷鍵一樣,開發者已經學會使用不同編程語言相關的許多標準接口。如果不撤銷以上兩次的否決,那麽這些立場將把開發者有效地鎖定在單一版權所有者的平臺上,就好比是鍵盤快捷鍵智能用於一種類型的計算機上。

Google 勝不了或許會放棄,Oracle 贏了又怎樣?

對於事件的最終結局,現在還存在很大的不定性。在 Google 看來,除非最高法院介入,否則當前聯邦巡回上訴法院裁決將對軟件行業帶來顛覆性的沖擊。但其實自從和 Oracle 杠上之後,Google 在全力上訴的同時似乎也為自己做好了敗訴的退路:

2016 年,Google 宣布 Android 系統采用 OpenJDK;
2017 年的 Google I/O 大會上,Google 宣布將 Kotlin 作為 Android 官方支持的開發語言;
過去一直有傳言,Google 秘密研發的 Fuchsia 系統在未來將會統一 Android 和 Chrome OS 系統,而從 Fuchsia 項目此前提交記錄上顯示,它或將支持 Java 了。
技術分享圖片

而對於 Oracle 而言,若這一案件勝訴,最終又將收獲到什麽呢?

事實上,從近幾年的科技行業發展來看,迫於 Oracle 昂貴的軟件服務費用,亞馬遜、SPA、Salesforce 等巨頭們紛紛發出“棄用 Oracle”的聲音。與此同時,在 Oracle 宣布 JDK 8 將收費以及 OracleJDK 無法免費商用之後,不少開發者也誕生棄 Java 而轉其他編程語言的念頭,對此亞馬遜甚至自己研發了一款 OracleJDK 的替代品—— Corretto,以備不時之需。

整體而言,此次 Oracle 倘若勝訴,顯而易見的是,其必然能夠收到來自 Google 的高額賠償,且能夠顛覆了行業中對於 API 固有的“無版權”定義,但估計也難免不會再一次地成為眾矢之的。

開發者何去何從?

不過,對於絕大多數的 Android 開發者來說,因 Google 和 Oracle 之間的官司,讓自己直接放棄成熟且擁有龐大技術支持的 Java,似乎也顯得不現實。

而且事件發展到如今,事實上,早已不單是 Google 和 Oracle 兩家的商業之爭,而是整個軟件行業的標準化的問題。如果此次事件中,聯邦巡回法院的最終判決獲得最高法院的支持,這意味著 API 是受版權保護,那麽它可能會迫使軟件行業的開發方式發生巨大變化。

過往,軟件開發者可以直接基於已創立的軟件平臺和標準功能進行開發,這樣能確保他們的新產品與已經存在的產品兼容。有時,這種兼容的軟件會打包到開源庫中,供其他人免費使用,並且可以與其他程序捆綁在一起以生成更大的軟件包。彼時的開發者普遍認為 API 不受版權保護,且企業也並不擔心自己開發的項目是否中引入了第三方 API 庫。

現在,聯邦巡回法院的裁決倘若真的開始執行,那麽可能導致很多引入第三方的 API 軟件會在一夕之間受到版權侵權索賠。對此,美國最高法院最終是否會受理次案件,目前尚未可知。如果受理,預估計今年秋季會有消息。

而針對這一現狀,Hacker News 上的網友也展開的激烈的討論:

@int_19h:鑒於 Oracle 此前曾在法庭上勝訴,人們至少要接受法律真正允許 API 受版權保護的可能性。但如果是這樣,法律需要迫切修改 API 的性質,至少從共有的角度來看,是互操作性問題超越其他一切。如果企業為了自己私有的商業利益而對 API 進行版權保護並阻止競爭對手使用自己的 API,那麽這對整個行業來說是非常不利的。
@toyg:Oracle 實際上並不缺錢。它們之所以這麽做是想要將長期受苦的客戶從本地產品往雲端產品過渡。但是現在很多人不相信他們,你可以和一條每年出現一次的鱷魚進行交易,但是在你使用 SaaS 時,你基本上是一直在鱷魚身邊行走,希望它不會在提前一天通知你的情況下以更高的價格咬你。在這種情況下,讓 Google 為 Android 交稅是值得的。
@nradov:控制主流的平臺具有很大的優勢。即使 Oracle 沒有從 Java 中獲得多少直接的收入,但是他們也可以用它來阻止競爭對手。
從道德的角度來看,Google 在 2005 年破壞了 Java 生態系統,而不是就版權問題和 Sun 進行談判,他們的行為很不合理。但是我還是希望 Google 可以贏。
**這裏是程序員秘密聚集地,各位還在架構師的道路上掙紮的小夥伴們速來

加QQ群:611481448
**

鏖戰九載,Google 是否會因 Oracle 而棄用 Java?