在下一個(gè)Android版本中Google將會把應(yīng)用程序接口(APIs)的實(shí)現(xiàn)替換為OpenJDK,它是Oracle私有的Java開發(fā)工具包(JDK)的開源版本。Google確認(rèn)了Android N將會僅依賴于OpenJDK,而非Android自身實(shí)現(xiàn)的Java APIs。一位Google的發(fā)言人說:“最為一個(gè)開源平臺,Android的構(gòu)建是基于開源社區(qū)的合作。在即將到來的Android的下一個(gè)版本Android N,我們計(jì)劃將所有Android的Java語言開發(fā)包用OpenJDK實(shí)現(xiàn),從而為開發(fā)人員在構(gòu)建應(yīng)用程序和服務(wù)時(shí)提供通用代碼庫。Google是OpenJDK社區(qū)的長期貢獻(xiàn)者,并且我們期待在未來為OpenJDK作出更大的貢獻(xiàn)。”
Android提供了一定的Java API庫,以支持使用Java語言來開發(fā)Android apps,這些庫分為兩部分:API庫和Google開發(fā)的API庫的實(shí)現(xiàn)代碼。Oracle開發(fā)的Java,其API庫由兩種實(shí)現(xiàn):專有的JDK版本和開源的OpenJDK版本。Google決定全面使用OpenJDK,其實(shí)Android在一些地方早已開始使用了,使用OpenJDK意味著要開源這部分的實(shí)現(xiàn)代碼。
這個(gè)code commit表明修改了8902個(gè)文件,明確表示了OpenJDK代碼被加進(jìn)了Android中:
Initial import of OpenJdk files.
Create new libcore/ojluni directory with src/main/java and src/main/native subdirectiories.
Build ojluni into core-oj jar.
Use openjdk classes from java.awt.font package.
Copy all files from jdk/src/share/classes and jdk/src/solaris/classes directories in openjdk into libcore/ojluni/src/main/java.
Copy following native files from openjdk to libcore/ojluni/src/main/native: [long list of files]
Google一直希望Android開發(fā)者能夠接受這些改變,因?yàn)樗陂_發(fā)apps時(shí)有助于簡化代碼 —— 使用單一共同的Java API代碼庫而非使用多代碼庫。這些原因可能是真實(shí)的,但并非完全轉(zhuǎn)向OpenJDK的全部原因,如果是這樣的話幾年前Google早就這么干了。當(dāng)Google發(fā)言人被問到為什么是現(xiàn)在,Google指出是去年發(fā)布的Java 8和Java語言的一些新特性例如lambdas。Google想要為OpenJDK投入更多資源,這樣團(tuán)隊(duì)就能對新特性和技術(shù)改進(jìn)有更大的影響力和發(fā)言權(quán)。
當(dāng)然這其中還涉及大量的版權(quán)問題,代碼的提交是否意味著Oracle和Google之間關(guān)于Java APIs的法律訴訟是否已經(jīng)庭外和解,由于Oracle的訴訟還在進(jìn)行,Google對于代碼提交和訴訟是否有關(guān)拒絕作出評論。2010年1月Oracle收購Sun之后,Oracle在2010年8月起訴Google的版權(quán)和專利侵權(quán),認(rèn)為Android在未經(jīng)授權(quán)的情況下使用了Java API。Google反駁稱,APIs不受版權(quán)保護(hù),因?yàn)樗鼘τ谲浖_發(fā)、協(xié)作和創(chuàng)新是必不可少的。在2012年5月,一個(gè)陪審團(tuán)認(rèn)為Java的API不受版權(quán)保護(hù),Google對Oracle的專利侵犯不成立。2014年5月,聯(lián)邦巡回上訴法院部分逆轉(zhuǎn)了區(qū)法院的判決,認(rèn)定Java API受版權(quán)保護(hù)。就在2015年6月,美國最高法院拒絕審理此案,案件發(fā)回下級法院繼續(xù)審理。在這些與Oracle的對決之后,Google已經(jīng)決定徹底擁抱OpenJDK了么?不管怎么樣,結(jié)局是確定的:Android未來的版本將基于OpenJDK而非Oracle專有的JDK版本。
不管怎么樣,案件還未結(jié)束,Google也無法改變現(xiàn)有的Android版本,業(yè)界人士對此案的裁決異常關(guān)注,因?yàn)檫@將對軟件開發(fā)產(chǎn)生巨大的影響。如果Oracle勝訴,開發(fā)者基于現(xiàn)有應(yīng)用和服務(wù)開發(fā)新的軟件都將產(chǎn)生版權(quán)問題。如果Google勝了,APIs的使用將不會受到版權(quán)保護(hù)。