GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Google 确认下一个 Android 版本将不会使用 Oracle 的 Java API,转而使用开源的 OpenJDK 替代

2015 年 12 月 31 日

在下一个 Android 版本中 Google 将会把应用程序接口(APIs)的实现替换为 OpenJDK ,它是 Oracle 私有的 Java 开发工具包( JDK )的开源版本。Google 确认了 Android N 将会仅依赖于 OpenJDK,而非 Android 自身实现的 Java APIs。一位 Google 的发言人说:“最为一个开源平台,Android 的构建是基于开源社区的合作。在即将到来的 Android 的下一个版本 Android N ,我们计划将所有 Android 的 Java 语言开发包用 OpenJDK 实现,从而为开发人员在构建应用程序和服务时提供通用代码库。Google 是 OpenJDK 社区的长期贡献者,并且我们期待在未来为 OpenJDK 作出更大的贡献。”

Android 提供了一定的 Java API 库,以支持使用 Java 语言来开发 Android apps,这些库分为两部分:API 库和 Google 开发的 API 库的实现代码。Oracle 开发的 Java,其 API 库由两种实现:专有的 JDK 版本和开源的 OpenJDK 版本。Google 决定全面使用 OpenJDK,其实 Android 在一些地方早已开始使用了,使用 OpenJDK 意味着要开源这部分的实现代码。

这个 code commit 表明修改了 8902 个文件,明确表示了 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]

Google 一直希望 Android 开发者能够接受这些改变,因为它在开发 apps 时有助于简化代码 —— 使用单一共同的 Java API 代码库而非使用多代码库。这些原因可能是真实的,但并非完全转向 OpenJDK 的全部原因,如果是这样的话几年前 Google 早就这么干了。当 Google 发言人被问到为什么是现在,Google 指出是去年发布的 Java 8 和 Java 语言的一些新特性例如 lambdas 。Google 想要为 OpenJDK 投入更多资源,这样团队就能对新特性和技术改进有更大的影响力和发言权。

当然这其中还涉及大量的版权问题,代码的提交是否意味着 Oracle 和 Google 之间关于 Java APIs 的法律诉讼是否已经庭外和解,由于 Oracle 的诉讼还在进行,Google 对于代码提交和诉讼是否有关拒绝作出评论。2010 年 1 月 Oracle 收购 Sun 之后,Oracle 在 2010 年 8 月起诉 Google 的版权和专利侵权,认为 Android 在未经授权的情况下使用了 Java API 。Google 反驳称,APIs 不受版权保护,因为它对于软件开发、协作和创新是必不可少的。在 2012 年 5 月,一个陪审团认为 Java 的 API 不受版权保护,Google 对 Oracle 的专利侵犯不成立。2014 年 5 月,联邦巡回上诉法院部分逆转了区法院的判决,认定 Java API 受版权保护。就在 2015 年 6 月,美国最高法院拒绝审理此案,案件发回下级法院继续审理。在这些与 Oracle 的对决之后,Google 已经决定彻底拥抱 OpenJDK 了么?不管怎么样,结局是确定的:Android 未来的版本将基于 OpenJDK 而非 Oracle 专有的 JDK 版本。

不管怎么样,案件还未结束,Google 也无法改变现有的 Android 版本,业界人士对此案的裁决异常关注,因为这将对软件开发产生巨大的影响。如果 Oracle 胜诉,开发者基于现有应用和服务开发新的软件都将产生版权问题。如果 Google 胜了,APIs 的使用将不会受到版权保护。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015 年 12 月 31 日 18:004781
用户头像

发布了 32 篇内容, 共 15.7 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第六周学习总结

fenix

极客大学架构师训练营

架构师训练营第六周总结

一剑

CAP原理

chenzt

LeetCode题解:15. 三数之和,JavaScript双循环+HashMap,详细注释

Lee Chen

LeetCode 前端进阶训练营

分布式系统架构学习总结(分布式数据库和NoSQL)

qihuajun

架构师第六周作业及总结

傻傻的帅

redis系列之——数据类型bitmaps:今天你签到了吗?

诸葛小猿

redis bitmaps bloomfilter

分布式系统架构作业

qihuajun

架构师训练营第 6 周作业二

不谈

架构师训练营第六周作业

R20114

极客大学架构师训练营

React与前端开发发展史

pingan8787

记一次Apache的代码导致生产问题

java金融

Java Apache spring BeanUtils

区块链扩张路径变局:从技术比拼转向生态落地

CECBC区块链专委会

1. react起始 | 2020年前端再入门系列连载

chaozh

前端开发 React

架构师训练营 Week 06 总结

Wancho

week6.课后作业

个人练习生niki

极客大学架构师训练营

从面试到入职到离职,我在B站工作的30天时光!!!

诸葛小猿

面试 B站 哔哩哔哩 收钱吧

极客时间架构师训练营 - week6 - 作业 2

jjn0703

极客大学架构师训练营

用Roslyn做个JIT的AOP

八苦-瞿昙

技术 随笔杂谈 aop 代理 框架

第六周作业

秦宝齐

学习 极客大学架构师训练营

用“实例化需求”,让需求澄清更高效

小隐乐乐

架构设计篇之中台战略思想与落地

小诚信驿站

架构设计 刘晓成 中台战略 服务化改造

400GE燎原前夜,智能IP网络的核心路由器巅峰际会

脑极体

架构师训练营第 06 周—— 练习

李伟

极客大学架构师训练营

对CAP的理解

朱月俊

架构师训练营 Week 06 作业

Wancho

Week 6 作业

Shawn

架构师训练营第 06 周——总结

李伟

极客大学架构师训练营

2020-07-11-第六周作业

路易斯李李李

面向对象编程学习

一叶知秋

第六周总结

秦宝齐

作业

Google确认下一个Android版本将不会使用Oracle的Java API,转而使用开源的OpenJDK替代-InfoQ