甲骨文是否可以要求 Java API 享有版权?这场10年官司怎么结

美国最高法院10月7日就 Oracle 甲骨文诉 Google 谷歌一案进行口头辩论。案件一直以来争议的核心是,甲骨文是否可以要求 Java API 享有版权,如果可以,那么谷歌是否侵犯了这些版权?

Java API 是否可以享有版权?

Sun 公司在1995年开发了 Java,2010年甲骨文以74亿美元收购了 Sun,Java 也随之为甲骨文所有。同年,甲骨文便起诉谷歌,认为谷歌侵犯了关于 Java 语言的版权,并索赔88亿美元。

谷歌编写了自己的 Java 版本的 Android 操作系统,但是为了允许开发人员基于 Andriod 自由编写程序,谷歌使用了与 Java API 相同的结构、顺序和组织。

甲骨文认为,谷歌将37种 Java API 的结构、顺序和组织,复制到了 Android 系统中,侵犯了 Oracle JDK 的版权。在这37个 package 里,谷歌在类和方法的命名,以及功能设计上,完全和 Oracle JDK 一样。

37 个 package 如下:

java.awt.font
java.beans
java.io
java.lang
java.lang.annotation
java.lang.ref
java.lang.reflect
java.net
java.nio
java.nio.channels
java.nio.channels.spi
java.nio.charset
java.nio.charset.spi
java.security
java.security.acl
java.security.cert
java.security.interfaces
java.security.spec
java.sql
java.text
java.util
java.util.jar
java.util.logging
java.util.prefs
java.util.regex
java.util.zip
javax.crypto
javax.crypto.interfaces
javax.crypto.spec
javax.net
javax.net.ssl
javax.security.auth
javax.security.auth.callback
javax.security.auth.login
javax.security.auth.x500
javax.security.cert
javax.sql

而谷歌认为,API 就像字母或语法,是适用于创建程序的基本元素。它涉及到的创意很少,开发人员只是将其作为代码中的一种简写形式进行引用,以引用其他更长的指令片段。因此不具有版权。

所以,在10月7日的辩论中,法官们试图用类比形容 API,并推导其是否应该享有版权。不过,纽约时报认为这是“在一个具有重大影响的案件中,法官们通用低技术含量的类比来处理关于计算机代码的高科技争议。”

首席法官 John Roberts 建议,也许谷歌的复制行为和餐馆老板抄袭另外一家餐馆的菜单结构没有什么区别,因为大多数菜单都是先有开胃菜,后有主菜,再之后是甜点。甲骨文公司的代码重要到别人会去试图复制,这就意味着甲骨文公司应该得到奖励,而不是因为版权侵犯受到伤害。

大法官 Stephen Breyer、Sonia Sotomayor 和 Elena Kagan 更倾向谷歌的立场。Stephen Breyer 辩称,允许甲骨文对 API 进行版权保护,就好像是允许 QWERTY 键盘的发明者可以拥有所有电脑的知识产权一样。Elena Kagan 引用了几种她认为类似但不具有版权保护的信息组织和呈现方法——包括元素周期表和动物物种分类系统。

该案的相关法律文件中,还引用《哈利波特》系列丛书做类比。支持甲骨文的观点认为,谷歌所做的就是拿走书的关键部分——章节标题,字符名称,每个段落的第一句话——每写一本新书就出售。支持谷歌的观点认为,最恰当的类比应该是书本身的结构,API 相当于书脊和带编号的页面,这样一来,访问和使用该书的机制不仅是《哈利波特》的界面,也是所有书的界面。

谷歌的代码使用合理吗?

加州大学一位法学助理教授 Tejas Narechania 总结,此案对美最高法院提出了两个大问题。首先是甲骨文的代码是否应该获得与《哈利波特》一书同样的版权保护,即 Java API 是否可以享有版权?二是,如果甲骨文可以要求版权保护,谷歌的代码使用是否合理?这个问题的答案则取决以法官如何解释版权法的复杂性。

有争议的代码大概有 11000 行,在总共有1500万行代码的 Android 软件中占比不到0.1%。一般情况下,谷歌的代码使用合理是基于“净室开发”行为。因为通常版权只保护表达,不保护表达背后的思想,“净室开发”写出的软件可能借用了其他软件的思想,但是没有借鉴表达,因此两个作品都具有独创性,互不侵权。

此案所涉的37个 package 已经通过“净室开发”重新实现。Oracle 也并未断言谷歌是一字不漏的使用,而是 API 的“结构,顺序和组织”如此相似。这在许多开发者看来,即便 Java API 可以享有版权,谷歌的行为也不构成侵权。

早在2012年的第一次诉讼中的审判中,法官将谷歌是否合理使用的问题交由陪审团评估。

陪审团坚持合理使用的观点。当时的陪审团裁定法官爱好编写代码,法官认为 API 的生命代码和单点登录根本不受版权保护,版权法不适用于任何“思想、过程、系统、操作方法”,而软件包、类和方法的命名以及排序方式过于实用,不值得版权保护。不过,当时陪审团的这一裁定,在后来的反复审理中被推翻过——2014年,联邦巡回法院撤销了此前的裁决。

到2016年,该案件返回地方法院,陪审团一致同意谷歌对 Java API 的使用是合法的合理使用。合理使用原则认为,在一系列条件下,未经许可重复使用受版权保护的作品片段是合法的。这一说法等于承认观点:开发可互操作的软件无需许可或许可证。 

紧接着,甲骨文再次对该决定提起上诉。2018年,联邦巡回法院再次推翻地方法院的裁决。之后谷歌一直在与联邦法院和美国最高法院沟通,希望法院能重申案件。2019年11月,美国最高法院同意复审案件。

谁动了谁的奶酪?

美最高法院刚刚结束辩论,还为给出最终的判决。谷歌和甲骨文,以及各自阵营的支持者已经吵的不可开交。最高法院在这个案件中的判决可能会对软件行业产生巨大影响。

支持谷歌的观点认为,如果甲骨文获胜,那么会给所有开发者树立巨大的版权障碍,并迫使开发者重复发明轮子,从而破坏软件行业。反之,谷歌认为这种未经授权的复制在软件中是完全标准的,可以节省开发人员创造新产品的时间,降低创新的阻碍。

甲骨文的律师则指控谷歌的复制行为,损害了 Sun 在开发原始代码方面的投资,如果法院作出对谷歌有利的判决,会使开发人员无法因为其工作而获得回报,进而破坏软件行业。支持甲骨文的人士看来,如果其版权不受保护,那么会阻碍创新。因为在软件领域,许多小型初创公司是依靠版权法附带的版权,和版权保护来证明其商业模式的合理性。

甲骨文提出的这个观点,或许是因为自己的“切身感受”。甲骨文曾以“Android 的普遍存在和成功”为由,声称谷歌给甲骨文造成近90亿美元的损失,要求赔偿数十亿美元。

甲骨文的首席律师 Dorian Daley 称,对于复制者来说,复制这些东西,然后为谋求商业利益写另一本书而影响原著市场,根本就不公平。“ Google实质上是提供竞争产品,并在该竞争产品中免费使用我们的软件。因此,与之竞争真的很困难。”

不过,无论是甲骨文还是谷歌,都深陷舆论泥潭。一直以来,针对谷歌的反垄断调查都怀疑谷歌在利用 Android 的市场优势,妨碍行业竞争。10月6日消息,美国政府最快将于下周对谷歌公司正式提起反垄断诉讼,此前,相关机构已对谷歌进行了长达近16个月的调查。

另一方面,甲骨文将 Java 私有化,以及过多的诉讼活动也常被诟病。你认为这次甲骨文和谷歌的十年官司战,谁能获胜?

推荐阅读


中国首个芯片大学要来了

谷歌最终还是把Knative交了出来

Chrome正在启用HTTP/3,支持IETF QUIC

自由软件基金会庆祝成立35周年

VS Code 1.50发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#知多少 | 每个版本都更新了什么?

总所周知,.NET5.0马上就要来了,最后一个预览版RC2也已经发布了,在11月的时候,我们就正式的发布了,然后我们就可以迁移使用了,当然今天说的重点不是.NET,今天说的是伴随着.NET5一起到来的C#9.0&a…

leetcode40. 组合总和 II(树层去重)

一:题目 二:上码 class Solution {/**注意这里的去重:1.我们分为树层去重比如[1,1 2,5] target 8,那么如果我们用树枝去重的话,那么就会出现[1,2,5],[1,2,5]那么的话我们就需要树层去重 就是横向遇见相同的元素跳过。2.树枝去重的 树枝去重就是 我们数组前面使用过的元素不…

WPF开源控件扩展库 - MaterialDesignExtensions

WPF开源控件扩展库 - MaterialDesignExtensionsMaterialDesignExtensions仓库截图logoMaterial Design Extensions 在WPF开源控件库 ????Material Design in XAML Toolkit(本站介绍:????链接)的基础上进行了控件扩展和特性新增。本开源项目中的控件或许不在…

leetcode131. 分割回文串

一:题目 二:上码 class Solution {/**思路:1.纵向递归的话 我们递归深度是 我们的 切割线切到了最后 2.横向for 我们的宽度就是字符串宽度3.在哪截取的话 那就是在哪个坐标的后面*/List<List<String>> ans new ArrayList<>();List<String> path n…

WordPress 已过时?创始人与新架构拥护者开战

喜欢就关注我们吧&#xff01;近日&#xff0c;WordPress 创始人 Matt Mullenweg 与 Netlify 首席执行官 Matt Biilmann 展开了一场口水战&#xff0c;双方就 WordPress 与新兴 WEB 应用架构 JAMStack 孰优孰劣进行了激烈的辩论。何为 JAMStack?JAMStack 是一种将 Web 应用部署…

leetcode93. 复原 IP 地址(思路+详解)

一:题目 二:上码 class Solution {/**思路: 1.跟分割字符串差不多,但是我们需要记录添加的.的个数 当其个数等于3的时候 我们就已经切割成4段了。2.判断字符是否合法1>:以0开头的数字不合法2>:遇见非数字字符不合法3>:大于255不合法*/private List<String> an…

今天的你,又被带节奏了吗?

这是头哥侃码的第220篇原创十一期间&#xff0c;我在某微信群看到几个哥们在讨论 与「带节奏」有关的话题。很显然&#xff0c;像这种略带吐槽的的话题是很容易引起共鸣的。于是你一句他一句的&#xff0c;用自带表情包的方式开始说起了「带节奏」的各种操作。先是A君&#xff…

谷歌最终还是把Knative交了出来

谷歌方面正计划将其开源 Knative 项目的直接控制权让渡给一个指导委员会。Knative 是谷歌开源的一套 Serverless 架构方案&#xff0c;它扩展了 Kubernetes&#xff0c;专注于解决容器为核心的 Serverless 应用的构建、部署和运行的问题&#xff0c;它构建在 Kubernetes 和 Ist…

你那么普通 所以一定要自信啊

你这么普通&#xff0c;必须自信啊 ​ 昨天讲到&#xff0c;不管你准没准备好&#xff0c;该来的都来了。只要你进入了社会&#xff0c;这一切都没得选&#xff0c;好的坏的甭管啥事&#xff0c;都一股脑摆在你面前&#xff0c;你必须要处理。你说我不行啊&#xff0c;我做不到…

leetcode293周赛6064. 不含特殊楼层的最大连续楼层数

一:题目 二:上码 // class Solution { // public:// bool find(vector<int>& v,int i) { // for (auto nums:v) { // if (nums i) return true;//包含某个数 就返回true // } // return false; // }// int maxCon…

leetcode293周赛5234. 移除字母异位词后的结果数组

一:题目 二:上码 class Solution { public:/**1.所谓字母异位词就是相同的字母组成的字符串&#xff08;这个字符串可以相同&#xff09;2.首先判断两个字符串中的字母是否相同用map进行计数&#xff0c;然后在另一个字符串中查找某个字符进行--;3.如果最终的map中所有的value…

七国要求科技巨头预留后门 应对马甲芯片高度警惕

日前&#xff0c;美国、英国、日本、澳大利亚、加拿大、新西兰、印度呼吁科技公司设计产品时确保政府可以访问经过加密的消息和内容。其实&#xff0c;西方科技公司配合西方政府在产品中预留后门早已不是新鲜事&#xff0c;斯诺登就曾经爆料多个美国科技巨头配合美国情报部门收…

leetcode78. 子集

一:题目 二:上码 class Solution {/**横向递归的是:我们子集的长度纵向递归的是:我们子集的中元素的更改*/List<List<Integer>> ans new ArrayList<>();List<Integer> path new ArrayList<>();public void getAns(int[] nums,int st) {ans.ad…

跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)

前言对于Redis而言&#xff0c;很多小伙伴只关注其关键的五大基础类型&#xff1a;string、hash、list、set、sorted set(有序集合)&#xff0c;其实还有三种特殊类型在很多应用场景也比较适合使用&#xff0c;分别是&#xff1a;bitmap、geospatial、hyperloglog&#xff1b;上…

leetcode90. 子集 II(树层去重)

一:题目 二:上码 class Solution {/**- 先排序- 树层去重:那么直接在从横向循环中去重即可*/List<List<Integer>> ans new ArrayList<>();List<Integer> path new ArrayList<>();public void getAns(int[] nums,int st) {ans.add(new ArrayLi…

Rancher 2.5 正式发布,多项重大更新来袭!

喜欢就关注我们吧&#xff01;近日&#xff0c;Kubernetes 管理平台 Rancher 2.5 正式发布&#xff0c;官方公布了在 Rancher 2.5 中的多项重大更新&#xff0c;包括全新的安装体验、针对边缘集群的大规模 GitOps 以及 EKS 集群的全生命周期管理。具体更新信息如下&#xff1a;…

leetcode491. 递增子序列(树层去重魔改版)

一:题目 二:上码 class Solution {/**思路:1.这里已经指明了不允许有重复的&#xff0c;那么树层去重 树枝去重(以前用过的元素不再使用)2.坑:这里不能用 传统的树层去重了 因为我们无法排序了3.这里给出的解决办法是 是利用 hashmap,对每个数出现的频率进行统计如果其频率…

数据结构与算法专题——第十二题 Trie树

今天来聊一聊Trie树&#xff0c;Trie树的名字有很多&#xff0c;比如字典树&#xff0c;前缀树等等。一&#xff1a;概念 下面有and,as,at,cn,com这几个关键词&#xff0c;构建成 trie 树如下。从上面图中&#xff0c;应该可以或多或少的发现一些好玩的特性。根节点不包含字符&…

leetcode46. 全排列

一:题目 二:上码 class Solution {/**1.全排列问题,我们的横向都是从0开始不再是st了 因为我们用到前面已经使用过的元素单是在纵向递归当中我们不能使用重复的元素&#xff0c;这里我们用used来去重。*/private List<List<Integer>> ans new ArrayList<>(…

leetcode47. 全排列 II

一:题目 二:上码 class Solution {private List<List<Integer>> ans new ArrayList<>();private List<Integer> path new ArrayList<>();private boolean[] used;public void getAns(int[] nums,boolean[] used) {if (path.size() nums.leng…