10 月,开发者不可错过的开源大数据大会-2021 WeDataSphere 社区大会深圳站 了解详情
写点什么

90 亿美元 Java 纠纷案反转:安卓中复制的代码属于合理使用

2021 年 4 月 06 日

90亿美元Java纠纷案反转:安卓中复制的代码属于合理使用

一起旷日持久、在软件领域具备里程碑意义的案件终于落幕——美国最高法院于当地时间 4 月 5 日裁定,Alphabet 旗下谷歌在开发其 Android 操作系统时并未侵犯 Oracle 的版权。最高法院表示,谷歌对一些 Java API 代码的复制是合理使用。


最高法院在大法官斯蒂芬·布雷耶(Stephen Breyer)的意见书中以 6 比 2 做出上述裁决,驳回了此前一家下级法院称谷歌 Android 侵犯甲骨文 Java 软件平台版权的裁决。


斯蒂芬·布雷耶称,若允许甲骨文对其代码实施版权保护,将成为“限制新程序未来创造力”的枷锁,而掌握钥匙的人只有甲骨文,从而损害了公众利益。


在判决公布后,谷歌负责全球事务的高级副总裁肯特·沃克(Kent Walker)在 Twitter 上发文道,“今天最高法院对谷歌诉甲骨文案的判决是创新、互操作性和计算领域的一大胜利。”他还表示,感谢美国领先的创新者、软件工程师和版权学者的支持。


甲骨文对此则表示,“他们(谷歌)偷走了 Java,并花了 10 年时间打官司,只有垄断者才能做到这一点。这就是为什么全球和美国的监管机构正在审查谷歌的商业行为。”


十年纠缠,数次反转


谷歌和甲骨文的这起版权纠纷官司已经打了十多年,起因是甲骨文诉讼谷歌安卓系统的 Java 源代码侵权。


甲骨文于 2010 年收购 Sun Microsystems 公司时获得了 Java 技术。同年,甲骨文起诉谷歌称,谷歌在开发 Android 系统时非法复制了超过一万行其子公司 Sun Microsystems 所编写的 Java API 代码,要求赔偿近 90 亿美元。而谷歌方面拒绝支付这笔赔偿金,并表示对相关代码的使用属于合理使用范畴,无需承担版权责任。


过去十年,甲骨文与谷歌就该版权纷争已打了多个回合:


  • 2010 年,甲骨文起诉谷歌侵犯了与 Java 相关的专利和版权,索赔 80 亿美元;


  • 2012 年 5 月,加州北区联邦法院裁定谷歌没有侵犯 Java 版权,Java API 不受版权保护;10 月,甲骨文上诉至联邦巡回上诉法院。


  • 2014 年,美国联邦巡回上诉法院推翻了一审部分结论,称必须尊重软件的版权保护,甲骨文赢得上诉,此案被发回重审。甲骨文此时提出了 93 亿美元的索赔。同年 10 月,谷歌申请美国联邦最高法院听审此案。


随后,联邦最高法院拒绝了谷歌的调卷令申请。根据联邦巡回上诉法院的指令,案件重返加州北区法院,由该院审理谷歌另外提出的“合理使用”主张。


  • 2016 年 5 月,陪审团认定谷歌的行为构成合理使用,不涉及专利侵权。10 月,甲骨文再次上诉至联邦巡回上诉法院;11 月,谷歌也提起了上诉。


  • 2018 年 3 月,甲骨文第二次赢得上诉,联邦巡回上诉法院推翻了陪审团的认定,认定谷歌侵权。


  • 2019 年 1 月,谷歌向联邦最高法院上诉。2 月,包括微软、Mozilla、开发者联盟、Python 软件基金会在内的谷歌盟友们陆续向联邦最高法院递交了法庭之友意见书,其中一份由 78 位计算机科学家联合签署的意见书打动了大法官们,该院终于同意复审本案。


在甲骨文看来,谷歌在没协议的情况下抄袭了版权属于甲骨文的 37 个 Java API 段。但谷歌认为,它所复用的 Java 函数接口(API,即应用程序接口)属于例外,版权的合理使用原则是允许这种复制的。


于是,这场漫长的诉讼焦点变成,API 是否也受版权法的保护,对它的复用是否可构成侵权,又或者,它在多大程度上获得版权保护。


软件代码的版权保护边界


针对该案,来自电影、音乐、出版等行业高度依赖版权保护的企业主要站在甲骨文一方。而软件行业的大多数人则认为,API 不受版权的保护。


最高法院在裁决中称,该院明确选择不对本案中最广泛的法律问题做出裁决,即 API 代码到底有无资格获得版权保护。


布雷耶代表最高法院写道:“考虑到技术、经济和商业环境的快速变化,我们认为,我们不应该回答超出解决双方纷争所必需范畴的问题。”


也就是说,虽然该院认为甲骨文的 Java API 有资格获得版权保护,但该院也表示,谷歌在合理使用原则方面有较佳论证,而这一概念旨在防止版权阻碍新产品和服务的开发。


计算机软件知识产权的保护边界一直是个很难判定的问题。在探讨 API 应不应该受版权保护的时候,需要理解 API 的含义和意义到底是什么,过程中伴随而来的是层出不穷的比喻。


站在甲骨文派的法官,曾将谷歌对 Java API 的复制比作是足球队抄袭了对方的战术,让自己的球队获得成功。


最高法院表示,谷歌为 Android 系统复制的代码仅占 Java API 总共 286 万行代码的 0.4%。布雷耶将这部分代码比喻为“汽车上的油门踏板,它可以告诉汽车更快地行驶,或者如同打字机上的 QWERTY 键盘,当你按下某个特定的键时,就会调用某个字母”。


也就是说,如果造车厂选择采用油门踏板的设计,它就得支付高昂的版权费用,如果不采用,那它得重新发明新的设计,同时也很难让用户对此买单。API 的意义类似油门踏板,Google 复用它以吸引开发者,继而让开发者能迅速上手进行创新,而 API 的使用若受到限制,则在某种程度上限制了创新。


“我们的结论是:在本案中,谷歌重新实现了一个用户界面,且只取所需,以允许用户将积累的才能用在一个新的、变革性程序中,谷歌对 Sun Java API 的复制在法律上是对该材料的一次合理使用。”布雷耶写道。


此前,由 78 位计算机科学家联合签署的意见书中,曾回顾了软件发展的历史,展示了得益于 API 重新实现而诞生的影响深远的伟大软件:计算机制造商重新实现 IBM BIOS API,从而有了 DOS,并最终诞生了 windows 系统;苹果通过重新实现 Unix API,创造了桌面端的 OS X 操作系统和 iOS 系统。即便是 Java,也不是 Sun 公司纯粹白手起家的产物,也建立在重新实现其他编程语言 API 的基础之上(例如 C 语言 math API、Perl 语言的正则表达式 API 等)。科学家们亦进一步指出:谷歌所做的,是一种长期存在且广泛普及的实践方式,其对于实现计算的基本进步至关重要,并且已经在过去数十年间推动了整个软件行业的历史创新。


加州大学伯克利分校的法律和信息学教授 Pamela Samuelson 称,这一裁决让开发者感到宽慰,API 已经成为这些开发者开发软件的核心。软件开发人员一直依赖既有的软件接口作为计算领域创新的基础,最高法院的裁决实际上再次肯定了这一做法。


参考:

https://www.wsj.com/articles/supreme-court-rules-for-google-in-multibillion-dollar-copyright-battle-with-oracle-11617632233

https://www.supremecourt.gov/opinions/20pdf/18-956_d18f.pdf

https://www.cnbc.com/2021/04/05/supreme-court-rules-in-googles-favor-in-copyright-dispute-with-oracle-over-android-software.html

https://www.bloomberg.com/news/articles/2021-04-05/supreme-court-overturns-oracle-s-copyright-win-over-google

2021 年 4 月 06 日 15:342612
用户头像
罗燕珊 InfoQ中文站编辑

发布了 155 篇内容, 共 54.7 次阅读, 收获喜欢 269 次。

关注

评论 2 条评论

发布
用户头像
Fair use 被支持了,但是API 设计有没有版权,还是没有定义。
2021 年 04 月 07 日 10:08
回复
用户头像
oracle 这恶心货。
2021 年 04 月 06 日 17:09
回复
没有更多了
发现更多内容

云智慧发布《智能业务运维》2021年刊 邀您共览数字化运维全景象

云智慧技术社区

AIOPS 智能运维

树莓派上的 K8S 集群挂了,怎么办?

百度开发者中心

百度 技术 经验分享

深度分享|中小银行如何实现数字化转型,建设智能营销新体系?

索信达控股

数字化转型 金融 银行 营销数字化 银行大数据

阿里巴巴P8自爆:Java八大核心思维导图知识梳理

Java架构师迁哥

Flink 实时计算在微博的应用

Apache Flink

flink

解密华为云FusionInsight MRS新特性:一架构三湖

华为云开发者社区

数据湖 云原生 华为云 FusionInsight MRS TechWave

☕【JVM 技术之旅】带你重塑对类加载机制的认识

李浩宇/Alex

JVM Java虚拟机 类加载器 原理分析 5月日更

《觉醒年代》观后感

xiezhr

觉醒年代 五四运动 南陈北李

为什么很多程序员,成为不了技术大牛?

实力程序员

一文带你认识MindSpore新一代分子模拟库SPONGE

华为云开发者社区

神经网络 mindspore 新一代分子模拟库 SPONGE 分子结构

☕【JVM 技术之旅】深入挖掘Java对象的内存结构

李浩宇/Alex

JVM java对象分析 java对象 5月日更 内存对象结构

前端开发:node.js的node包管理器npm安装以及使用

三掌柜

5月日更

Rust从0到1-泛型-定义

rust 泛型 generic

Docker挂了,数据如何找回

运维研习社

Docker 运维 数据恢复 5月日更

Github Action 自动构建 Flutter Android Apk

Leetao

flutter Github Actions

超详细的JQuery的 DOM操作,一篇就足够!

华为云开发者社区

html 前端 DOM 函数 JQuery框架

做开发,这几种锁机制你不得不了解一下

华为云开发者社区

读写锁 自旋锁 互斥锁 优先锁

微服务架构设计之解耦合

Damon

微服务 5月日更

充值卡业务接口的幂等设计(附伪代码)

林一

ON DUPLICATE KEY UPDATE 幂等性 Kafk

网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

JackJiang

websocket 消息推送 即时通讯 IM

中国与世界共享数字经济机遇

CECBC区块链专委会

数字经济

多元线性回归模型 - DAY14

Qien Z.

5月日更 多元线性回归

小走神

Nydia

学习

防火墙

escray

学习 极客时间 安全 5月日更 安全攻防技能30讲

谈一谈Java的前生今世

孙叫兽

Java jdk 发展史

教你用 3 行代码发邮件

小匚

Python 学习 自动化

架构实战营模块4作业

阿体

【数据标注的类型有哪些】看懂这篇文章就够了!

澳鹏Appen

人工智能 机器学习 人工智能大数据 数据标注

【Flutter 专题】121 图解简易 Slider 滑动条

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

k8s 上运行我们的 springboot 服务之——技术方案实现图

柠檬

k8s SpringBoot 2

一种基于实时分位数计算的系统及方法

百度Geek说

云计算 前端 云服务

开源中间件技术学习路线

开源中间件技术学习路线

90亿美元Java纠纷案反转:安卓中复制的代码属于合理使用-InfoQ