在过往的九年间,Google 因旗下全球第一大操作系统 Android 中是否合理使用 Java 的问题,已经与软件巨头 Oracle 大战了三百回合,但一直没得到最终的定论。
而如今,随着 Google 官方博客中一则名为《Oracle v. Google and the future of software development》声明的发布,标志着这一案件的最后一战即将打响。在声明中,Google 全球事务 SVP 兼首席法务官 Kent Walker 表示“我们请求美国最高法院审查 Google 与 Oracle 在软件接口使用方面长期存在的版权纠纷。案件的结果将对整个计算机行业的创新产生深远的影响。”
这意味着 Google 已经向美国最高法院提出审理与 Oracle 之间有关 Java 版权问题的请求。其中如果最高法院接受案件审理,那么 Google 或许还有翻盘 Oracle 的可能;但如果最高法院拒绝审理此次案件,那么 Google 只能执行去年 3 月份美国联邦巡回上诉法院的裁决结果,即 Google 使用 Java 开发 Android 系统的行为的确侵犯了 Oracle 的版权,需向对方赔付 88 亿美元。
回顾正常案件,这看起来仅是部分代码的事件为何会演变成为如今这般情景?Oracle 的胜诉又将带来怎样的影响?最终是否会导致 Google 弃用 Java?全球的软件开发者又该何去何从?
全球第一大操作系统 Android:树太大招来了强风
提及这一事件的根源,其实还得从 Google 的 Android 系统讲起。
21 世纪以来,各大科技巨头暗中发力,为移动互联网的新纪元做足了准备,其中 Google 也不例外。2005 年,Google 在低调地将成立仅 22 个月的高科技企业 Android 及其团队收购后,迫切希望以此为契机能打破塞班统治的手机操作系统市场格局,抢占移动互联网下智能手机领域的先机。然而在美好的愿景之下,如何才能突破常规,打造出更出彩的操作系统生态?
当然首要因素是需要适用于诸多的开发者及用户,而这前提就需要 Google 去选择一门成熟且极具前景的编程语言为基础。
在彼时的环境之下,和广泛应用于桌面系统软件开发的 C++、非面向对象的 C 语言、社区生态不够庞大的 Python 等语言相比,具有良好的跨平台特性以及拥有成熟生态系统的 Java 无疑中成为了 Google 最佳的选择。
不过值得注意的是,当时的 Google 并没有直接将 JVM 直接搬到 Android 上,而是自己使用 Java API 设计了一个能够运行 Android 应用程序的虚拟机——Dalvik,在这过程中,Google 并未向当时 Java 的拥有者 Sun 公司获取 API 的授权,而正是因此,才引发了后来两大巨头有关 Java 的版权之争。
Google 与 Oracle 之间的 9 年之争
2009 年,纯软件先驱 Oracle 以 74 亿美元收购了 Sun 公司、并接手了 Java 的拥有权。然而令人唏嘘不已的是,第二年即 2010 年 8 月,Oracle 就以一纸文书将 Google 告上了法庭,称迅速占领移动操作市场的 Android 系统侵犯了七项 Java 版权和专利,同时要求 Google 赔偿 26 亿美元。虽然 Oracle 律师 Annette Hurst 曾正面回应,Oracle 收购 Sun 公司并不是为了对 Google 发起版权诉讼。但是在收购第二年就急切地提出诉讼,这一行为免不了让业界人士的猜想一番。
对此,Oracle 方坚持的态度是,Google 明知道 Java API 是受版权保护的,还故意而为之,目的就是为了让传统的 Java 程序员能很好地往 Android 平台过渡,为 Android 的生态带来丰富的应用程序。与此同时,Android 背靠 Java 这棵大树,才会大获成功,为 Google 带来了巨大的商业价值。简而言之,没有 Java,Android 不会有今天的地位。
而另一面,Google 则一直强调对于开源的 Java,自由使用 API 是业界的正常做法,暗示着自己并不知晓 Java API 是具有版权保护的。
不过,对 Google 颇为不利的是,Oracle 在随后的对弈中,收集到了一封Android 之父 Andy Rubin 邮箱的企业内部邮件,其中提到 Google 内部试过替 Android 和 Chrome 寻找 Java 以外的替代方案,但那些替代方案都很糟糕,所以需要协商 Java 的授权问题。这意味着 Google 私底下都是知晓 java.lang 是受版权保护的。
在此不利的情况之下,2011 年 3 月,Google 聘用了 Java 的创始人 James Gosling 来为自己站台。而自此之后,Google 和 Oracle 之间的 Java 侵权事件也开始愈演愈烈:
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) { if (fromIndex > toIndex) throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex+")"); if (fromIndex < 0) throw new ArrayIndexOutOfBoundsException(fromIndex); if (toIndex > arrayLen) throw new ArrayIndexOutOfBoundsException(toIndex); }
Java 侵权案升级为行业的 API 版权之争
时针走到了现在,也正如文章伊始所述,Google 寄最后的希望于最高法院。但无论最高法院受理与不受理,这将都是一场有关 API 的版权论。
作为将复杂软件系统结合在一起的粘合剂——应用程序接口,Google 全球事务 SVP 兼首席法务官 Kent Walker 在声明中表示道,“标准化的软件接口推动了软件开发的创新。它们让计算机程序可以相互交互,让开发者能够轻松地基于不同平台构建技术。”
同时,Kent Walker 认为:
随着智能手机应用程序的普及,我们往往会忽略开发者在各种不同平台上创建应用程序的难度。而在 2008 年,Google 发布开源的 Android 平台改变了这一现状。它帮助开发者克服了更小的处理器、有限的内存和更短的电池寿命带来的挑战,同时为智能手机开发提供创新的特性和功能。最终带来双赢,即开发者可以更方便地构建新的应用程序,制造商可以创造出优秀的新设备,由此产生的竞争可以使消费者既享受更低的价格,也可以获得更多的选择。Google 根据计算机行业长期接受的重复使用软件接口的做法构建了 Android,这些接口提供了一组命令,可以轻松实现常用功能,譬如按下“Ctrl”+“P”键盘快捷键,就可以触发打印功能,使打印变得容易。Android 开创了一个变革性的新平台,同时让数百万 Java 程序员使用他们现有的技能来创建新的应用程序。而 Java 的创造者支持 Android 的发布,并称它“给(Java)社区的发展安上了火箭。”但在 2010 年收购 Java 之后,Oracle 起诉 Google 使用这些软件接口,试图通过事后改变软件开发规则且从中获利。Oracle 的诉讼声称自己有权控制软件接口即软件开发的基石,由此也能够锁定投资于学习免费和开放 Java 语言的开发者社区。旧金山法院最初裁定,在这种情况下,软件接口不具有版权,但该决定后来被驳回。陪审团曾一致地认为 Google 对接口的使用是合法的合理使用,但该决定后来同样被否决了。除非最高法院纠正这两个否决,否则这个案例将终止开发者自由使用现有软件接口为消费者构建新一代计算机程序的传统能力。就像我们都学会使用计算机键盘快捷键一样,开发者已经学会使用不同编程语言相关的许多标准接口。如果不撤销以上两次的否决,那么这些立场将把开发者有效地锁定在单一版权所有者的平台上,就好比是键盘快捷键智能用于一种类型的计算机上。
Google 胜不了或许会放弃,Oracle 赢了又怎样?
对于事件的最终结局,现在还存在很大的不定性。在 Google 看来,除非最高法院介入,否则当前联邦巡回上诉法院裁决将对软件行业带来颠覆性的冲击。但其实自从和 Oracle 杠上之后,Google 在全力上诉的同时似乎也为自己做好了败诉的退路:
而对于 Oracle 而言,若这一案件胜诉,最终又将收获到什么呢?
事实上,从近几年的科技行业发展来看,迫于 Oracle 昂贵的软件服务费用,亚马逊、SPA、Salesforce 等巨头们纷纷发出“弃用 Oracle”的声音。与此同时,在 Oracle 宣布 JDK 8 将收费以及 OracleJDK 无法免费商用之后,不少开发者也诞生弃 Java 而转其他编程语言的念头,对此亚马逊甚至自己研发了一款 OracleJDK 的替代品—— Corretto,以备不时之需。
整体而言,此次 Oracle 倘若胜诉,显而易见的是,其必然能够收到来自 Google 的高额赔偿,且能够颠覆了行业中对于 API 固有的“无版权”定义,但估计也难免不会再一次地成为众矢之的。
开发者何去何从?
不过,对于绝大多数的 Android 开发者来说,因 Google 和 Oracle 之间的官司,让自己直接放弃成熟且拥有庞大技术支持的 Java,似乎也显得不现实。
而且事件发展到如今,事实上,早已不单是 Google 和 Oracle 两家的商业之争,而是整个软件行业的标准化的问题。如果此次事件中,联邦巡回法院的最终判决获得最高法院的支持,这意味着 API 是受版权保护,那么它可能会迫使软件行业的开发方式发生巨大变化。
过往,软件开发者可以直接基于已创立的软件平台和标准功能进行开发,这样能确保他们的新产品与已经存在的产品兼容。有时,这种兼容的软件会打包到开源库中,供其他人免费使用,并且可以与其他程序捆绑在一起以生成更大的软件包。彼时的开发者普遍认为 API 不受版权保护,且企业也并不担心自己开发的项目是否中引入了第三方 API 库。
现在,联邦巡回法院的裁决倘若真的开始执行,那么可能导致很多引入第三方的 API 软件会在一夕之间受到版权侵权索赔。对此,美国最高法院最终是否会受理次案件,目前尚未可知。如果受理,预估计今年秋季会有消息。
而针对这一现状,Hacker News 上的网友也展开的激烈的讨论:
这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来
加QQ群:611481448