【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

OpenJDK 将对 Android 开发产生怎样的影响?

  • 2016-01-28
  • 本文字数:3205 字

    阅读完需:约 11 分钟

Google 已决定将从下一版本的 Android 开始采用 OpenJDK,本文将部分摘录互联网上对于这一决定的反响。

在去年年底,我们曾提到 Google 已经决定在 Android 中使用 OpenJDK,以取代基于 Harmony 实现的 Java 库(详情请见此处)。尽管这条消息在宣布时恰逢圣诞期间,但Google 的这一决定还是在互联网上引起了很大的反响,我们将在本文中对于这些观点进行一次总结。

这个Git 工单可以看出,早在2015 年二月,Google 就已经在代码中露出了切换至OpenJDK 的计划。在去年十二月,这次代码提交中所包含的一个重要的授权信息的变化被媒体曝光了。Android N 中所使用的新Java 库将不再基于Apache License 2.0(APL)授权协议,而是基于GNU GPL 2 协议,并且在版权信息中包含了以下声明:“Oracle 及其附属机构版权所有,1997,2011”。

Mozilla 的前任 CTO Andreas Gal 为此专门写了一篇标题有些骇人的博客“ Oracle 将它的魔爪伸向了 Android ”。他表示,Google 长期以来一直坚持使用 Harmony 的 Java 库及 Apache 授权,其原因在于:

用户能够任意使用及修改 APL 代码,而无需发布这些改动。换句话说,你能够进行具有专利权的改动与改进。而这一点对于基于 LGPL 授权协议的 GNU libc 来说是不可能的。我可以确信地说,我知道为什么 Google 认为这一点很重要,因为在发布 Firefox OS 的过程中,我曾经和许多与 Google 有合作关系的芯片供应商以及 OEM 厂家进行过交流。芯片与 OEM 厂商都希望在软件层面上表现出他们的优势,尝试对 Android 的代码进行全方位的改进。尤其是芯片厂商经常会改动类库中代码,以充分利用自家的专利芯片,而且他们不愿意公开分享这些改动。通过这种方式能够体现出他们的竞争优势,即在专利上的优势。

Bob Ross 回复了 Gal 的文章,他自称是某家 OEM 厂商的员工,对于 APL 与 GPL 的争论提出了一些见解:

我们确实会对 libcore 进行一些改动,在这种场合,主要问题是进行开源会带来很大的工作量,倒不是说要保护这些代码。至少从我曾经参与过的改动来看,情况就是如此。

Bradley M. Kuhn 目前担任自由软件管理机构(Software Freedom Conservancy)的主席,同时也是自由软件基金会(Free Software Foundation)的董事会成员。他对于 GPL 可能对 Andoid 开发所造成的影响有着不同的见解。在最近的一篇博客文章“ Sun、Oracle、Android、Google 以及 JDK 复制权(copyleft)的质疑”中,Kuhn 注意到 OpenJDK 授权其实属于一个“非常宽松”的协议,即包含 Classpath 例外的 GNU 协议。Kuhn 曾经参与了 Classpath 例外协议的设计与命名,这一协议旨在避免通过复制权保护的方式“感染”整个 Java 生态系统,否则所有的 Java 程序都将被迫选择可以免费使用及重新分发的方式。如此一来,从授权协议的角度来看,选择使用 OpenJDK 与使用 Harmony 也没有多大的区别了。按照 Kuhn 的说法:

那么,采用了 Oracle 的 GPL 及 Classpath 例外协议的 JDK 与具备 Apache 授权的 Java userspace 又有多大的差别呢?它们的差别其实并不大!Android 的重新分发者已经在 kernel space 方面承担了很大的复制权责任,并且请你记住,Webkit 是基于 LGPL 授权协议的,所以说围绕着 Android 已经存在着一些比较宽松的复制权遵循责任了。如此一来,如果说某个重新分发者已经满足了以上协议,那么要遵循那些新加入 JDK 代码中的需求也不是什么麻烦事,因为这些需求只有更为宽松。

但在 Gal 看来,Oracle 对于 Android 的未来发展将产生重大的影响,这不仅仅是因为授权的原因,同时也受到 Java 的发展路线、商标、条约与专利的影响:

除了源代码之外,Oracle 还有别的方法可以控制 Java 的发展,因此 OpenJDK 所谓的自由性就好像一所监狱。你可以投票决定外墙有多高,甚至可以去参与砌墙工作,但一旦你进入这里,就只有 Oracle 能够决定你何时才能出去。Oracle 对于 OpenJDK 的路线图有很大的决定权,通过对于兼容性需求、商标、现有协议以及 API 版权控诉(Oracle 与 Google 之间的控诉)的掌握,Oracle 几乎全盘控制了 OpenJDK 的发展方向。

部分读者在 Gal 的博客中留言表示,如果 Oracle 不能胜任 OpenJDK 的发展,那么 Google 完全可以创建一个分支,并自行决定它的发展方向。

Gal 同时预测,对于 Android 来说,接下来的一年注定是艰难的一年:

由于代码与技术的混杂,这将在战术层面上牵连 Android 的开发。不夸张的说,所改动的代码将达到几百万行,并且从实现方面来看,新的 OpenJDK 与 Google 原本采用的 Harmony 代码在正确性或性能表现上有许多微妙的差别。如你所见,Google 在日期数据的处理上更正了一个针对特定边界条件的测试用例。这是由于 Harmony 与 Oracle 的 OpenJDK 的表现有所差别,因此必须对测试进行更正。

而 Android 应用的整个生态系统就建立在这些正面临着变化基础上。Android 的应用商店中有几百万个应用都依赖于 Java 的标准类,正如上文所述,不仅必须对测试进行更正,并且由于 OpenJDK 的转换所产生的微妙差别,这些应用都有可能随机地发生错误……

由于这次的巨变,我感觉 Android N 已经很难按期发布了。Google 的做法无异于在飞行途中更换引擎,此时优先级最高的任务是保证不会坠机,至于是否能够按时抵达目的地,Google 已经没时间去担心这个了。

Brendan Eich 在一条推文中表示支持Gal 的意见:“虽然我们的所知有限,但我同意 @andreasgal 的看法,代码的改动将带来成本与风险的上升。”

Codename One 的联合创始人之一的 Shai Almog 也同意 Google 和 Android 的开发者将不得不面对一些额外的工作,但并没有 Gal 与 Eich 所认为的那么严重,并且使用 OpenJDK 还能够多多少少让他们受益。

虽然有些改动能够让用户直接受益,但对于大多数软件开发过程来说,改动无法带来直接的受益。并且也不是所有开发者都能够完全利用每一个语言与 API 的特性。

由于基础代码库得到了统一,用户将从中受益,并且安全审核流程也可以专注于这个具有更高统一性的基础代码库了。其结果是许多标准 Java 工具在 Android 上或许能够表现得更出色……

没错,Google 需要付出一定精力以完成这一过程,也确实会有一些应用可能会受到影响。但我敢说,这次改动比起 Marshmallow(即 Android 6.0)的改动所带来的影响会小的多,并且 Google 本身有一些工具能够让许多问题得以缓解(例如 SDK 版本提示)。

有些人怀疑 Google 决定采用 OpenJDK 是否和他们与 Oracle 之间的控诉纠纷有关。而 Kuhn 则相信 Google 这次决定的背后是出于技术方面的原因:

一位 Java 业界分析师(他在这一行已经有十年以上的经验了)告诉我,他相信这一决定的主要动力是技术方面的原因。在 Android 平台上开发 userspace 应用的作者们都在寻找新的 Java 语言实现,考虑到市面上已经存在了这个合理的、具有授权的免费软件,因此 Google 就有理由选择在技术上转换至这个更有优势的代码库,毕竟它为 API 的使用者在技术层面上提供了他们想要的东西,同时也降低了维护的难度。这样看来,这个决定是非常合理的。这种说法或许没有权威人士的观点那样令人震撼,但技术方面的原因的确很可能是这个决定的主要推动力。

Android 从新版本操作系统开始将采用 OpenJDK,这一举措会带来怎样的影响,目前来说还难以进行全面的透彻分析,这很大程度上取决于 Oracle 与 Google 之间争论不休的版权控诉将走向何方。目前为止,还没有人能够清楚地说明一个 API 接口是否能够拥有版权信息,法律与法院必须明确地解答这一点。自从上一个现有版本的库开始,Android 中的部分代码,包括 Java 与 C 在内就开始了重新构建工作,某些无用的代码被删除,但依然保留了接口或头文件。那么是不是说 Android 从此就可以摆脱那些麻烦了呢?这还有待时间观察。不过采用 OpenJDK 之后应该能够起到一些缓解作用,因为 Google 如今已经满足了 Java 授权和专利许可,Oracle 也不能再对 Android 说三道四了。

查看英文原文: What Impact Will OpenJDK Have on Android Development?

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2016-01-28 18:007511
用户头像

发布了 428 篇内容, 共 171.4 次阅读, 收获喜欢 36 次。

关注

评论

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

ThreadPoolExecutor线程池内部处理浅析

快乐非自愿限量之名

Python 内部处理

技术人的 2023 总结|火山引擎开发者社区联合 InfoQ 写作社区第四届有奖征文获奖公布!

InfoQ写作社区官方

云原生 音视频 火山引擎 热门活动 #大模型

基于低代码平台开发应用程序

这我可不懂

低代码 JNPF

低代码不适合做哪些应用?

代码生成器研究

mysql的索引以及优化时的注意项

想要飞的猪

Kosmos实现无状态工作负载跨集群平滑扩展

畅聊云原生

低代码如何提高生产力?

互联网工科生

低代码 项目开发 JNPF

全面预算管理平台:让企业管理智慧升级

智达方通

智慧管理 全面预算管理

348字节实现精简版吃豆人小游戏

南城FE

JavaScript 前端 游戏

国内开源的低代码框架有哪些?

代码生成器研究

从HumanEval到CoderEval: 你的代码生成模型真的work吗?

华为云PaaS服务小智

云计算 软件开发 华为云

JNPF低代码平台详解 -- 系统架构

树上有只程序猿

低代码 应用开发 JNPF

IT外包助力企业数字化转型案例分享

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

spring核心功能与他们的实现总结

想要飞的猪

案例解析关于ArkUI框架中ForEach的潜在陷阱与性能优化

华为云开发者联盟

鸿蒙 开发 华为云 HarmonyOS 华为云开发者联盟

IT服务外包的优点有哪些?

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

关于低代码的常见误解

代码生成器研究

零束科技:博睿数据是智能化路上的可靠“守护者”

博睿数据

#运维

RUM增强APP端快照配置全量会话回放与自定义协议网络请求采集功能

博睿数据

如何根据获取到的商品信息制定更加精准的营销策略?

技术冰糖葫芦

API 文档

开发体育赛事直播APP平台实现“流量”向“增量”的成功转化

软件开发-梦幻运营部

Kosmos介绍

畅聊云原生

从 Oracle 到 TiDB,全链路数据迁移平台核心能力和杭州银行迁移实践

PingCAP

数据库 数据库迁移 TiDB 银行业

redis高可用的方案都有哪些?

想要飞的猪

kafka的核心组件以及特点

想要飞的猪

自建大数据平台迁移腾讯云EMR最佳实践

腾讯云大数据

EMR

SDK对比测评|如何科学做直播产品技术选型?

音视频开发_AIZ

音视频 技术选型 直播推流 音视频技术 测评对比

谁说低代码做不了复杂的企业应用?

代码生成器研究

Amazon CTO Werner Vogels:2024年及未来四大技术趋势预测

亚马逊云科技 (Amazon Web Services)

re:Invent AIGC Amazon S3 大语言模型

交易所开发:服务为您的企业提供支持

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Linux MIPI 调试中常见的问题

快乐非自愿限量之名

Linux 运维 调试 linux运维

OpenJDK将对Android开发产生怎样的影响?_Java_Abel Avram_InfoQ精选文章