谷歌将在下一代Android系统Android N中用甲骨文(Oracle)公司的开源代码OpenJDK来替代后者的Java APIs(Application Programming Interfaces)。
此事最先在上个月由Hacker News贴出的一段神秘安卓代码库露出,目前VentureBeat已得到谷歌的正式确认。
官方的回应是:
作为一个开源平台,Android建立在合作共生的开源社区之上。在下一版的Android系统之中,我们计划将Java语言库替换为以OpenJDK为基础创造出来的通用代码库,便于让开发者开发app和服务。谷歌常年为OpenJDK做贡献,未来还将继续下去。
若要追本溯源的话,谷歌和甲骨文的争议从2010年就开始了,后者一直称谷歌的Android系统使用了甲骨文的Java版权和专利,并将谷歌告上法庭,索赔61亿美元。
在公理上谷歌是理亏的,此举想必也是迫于压力与常年消耗战带来的疲惫。虽然OpenJDK是Java SE的中的代码,同样隶属于甲骨文,但它是开源的,且Java SE在2007年诞生之时甲骨文还没有收购Sun Microsystems、拥有Java。
Android提供一些Java API代码库来支持开发者用Java编程语言开发应用,主要分为两部分:代码库的APIs,以及谷歌为了让代码库工作而开发的执行代码。甲骨文拥有Java,并有两个这种代码库:专有JDK和开源OpenJDK。谷歌使用的是后者,并已在某些领域有了应用,意味着其将分享这些执行代码。
从这段代码库的改动可以看出OpenJDK代码已经被加进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]
谷歌声称这一改变是因为要使用第8版Java的功能,但要真是这样早就应该换了,其背后的缘由其实还是来自甲骨文的纠缠。事情发展到现在,赔多少钱还没定,但谷歌基本上不太可能再使用由版权的APIs了。
最后,案件尚未结束,而最终的审判结果将产生巨大影响:如果甲骨文胜诉,科技巨头们将不再能随意使用存在版权的API包了。