Python 还能承担下一个时代的发展重任吗?Mojo 语言的横空出世对 AI 研发生态有什么影响? 了解详情
写点什么

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

  • 2015-12-31
  • 本文字数:1552 字

    阅读完需:约 5 分钟

在下一个 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:005186
用户头像

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

关注

评论

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

随机森林-随机森林在乳腺癌数据上的调参

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

从这两道题重新理解,JS的this、作用域、闭包、对象

loveX001

JavaScript

你是如何使用React高阶组件的?

beifeng1996

React

CSS学习笔记(三)

lxmoe

CSS 前端 学习笔记 11月月更

【docker】软链接迁移docker碰到的问题

非晓为骁

Docker 迁移

云原生系列三:K8s应用安全加固技术

叶秋学长

#k8s K8s 多集群管理 安全加固 11月月更

【LeetCode】字符串轮转Java初学者题解

Albert

算法 LeetCode 11月月更

湖仓一体电商项目(五):内网穿透工具-网云穿

Lansonli

湖仓一体 11月月更

阿里云日志服务SLS携手观测云发布可观测性解决方案,共建可观测应用创新

TalkingData

阿里云 可观测 存储上云 日志服务 sls

互联网+背景下企业客户服务的创新之路

Baklib

谈谈企业级前端 Angular 应用的定制化二次开发话题

Jerry Wang

前端开发 angular SAP Hybris 11月月更

Hessian Hessian2 JDK 序列化性能对比

water

手写一个Redux,深入理解其原理-面试进阶

beifeng1996

React

京东前端经典react面试题合集

beifeng1996

React

OKR之剑·实战篇02:OKR执行前的热身准备

vivo互联网技术

团队管理 OKR 目标管理

带你实现react源码的核心功能

goClient1992

React

从React源码来学hooks是不是更香呢

goClient1992

React

Web组态软件之Sovit2D组态可视化编辑器

2D3D前端可视化开发

组态软件 web组态 组态编辑器 工业组态软件 web组态软件

4.NLP领域任务如何选择合适预训练模型以及选择合适的方案【规范建议】【ERNIE模型首选】

汀丶人工智能

nlp 11月月更

每日一题之Vue的异步更新实现原理是怎样的?

bb_xiaxia1998

Vue

张益唐111页论文攻克朗道-西格尔零点猜想

老周聊架构

数学 11月月更 朗道-西格尔零点猜想

快速搭建Jenkins集群

程序员欣宸

DevOps jenkins 11月月更

令人头秃的js隐式转换面试题,你能做对吗

loveX001

JavaScript

腾讯前端二面常考react面试题总结

beifeng1996

React

黑客“劫持”了一颗卫星,用它直播黑客大会和放电影

博文视点Broadview

拿到大厂前端offer的前端开发是怎么回答面试题的

loveX001

JavaScript

从React源码角度看useCallback,useMemo,useContext

goClient1992

React

湖仓一体电商项目(四):项目数据种类与采集

Lansonli

湖仓一体 11月月更

JavaScript-防抖

格斗家不爱在外太空沉思

JavaScript 前端 11月月更

JavaScript-节流

格斗家不爱在外太空沉思

JavaScript 前端 11月月更

【选型攻略】MLCC选型,要注意些什么?易学易用

元器件秋姐

元器件选型 MLCC选型 元器件选型攻略 元器件电商平台

  • 扫码加入 InfoQ 开发者交流群
Google确认下一个Android版本将不会使用Oracle的Java API,转而使用开源的OpenJDK替代_移动_百占辉_InfoQ精选文章