旷日持久的 Java 版权大战,以谷歌的胜利告终了。

4 月 5 日,美国最高法院裁定谷歌在构建 Android 软件时可以合法使用甲骨文(Oracle)的 Java 代码,作为应用程序编程接口(API)代码的元素。

“谷歌对于实现用户界面 API 的复制,仅采用了允许用户将其应有的才能投入新的,变革性程序中所需的一切,这就构成了对该材料的合理使用”。在最高法院的投票中,赞成和反对该判定的比例是 6 比 2。特朗普此前新任命的大法官巴雷特并未参与此案。

这一判断推翻了先前联邦巡回法院的几次裁决,其当时认定谷歌对 API 的使用构成了侵权。

2010 年 8 月,甲骨文对谷歌提起诉讼,声称谷歌未经许可擅自使用 Java 软件的内容作为安卓操作系统 API 的一部分,侵犯了其专利和版权。谷歌则回应认为,API 就像字母或语法,是用来创建程序的基本元素。

大法官:谷歌复制代码是合理使用

美国最高法院法官现在得出的结论是,允许程序员访问其他代码的 API 与其他类型的计算机程序有很大的不同。

“作为界面的一部分,被复制的代码行与不可复制的思想固有地捆绑在一起…… 并激发了新的创造表达。”大法官斯蒂芬 · 布雷耶(Stephen Breyer)在判决意见中写道,“与很多其它计算机程序不同,复制的代码行的大部分价值来自于开发人员对生态系统的投资,而不是程序的实际操作。谷歌使用该 API 来让 Java 程序员构建安卓应用,法院宣布这从根本上是一种变革性的用途。”

“谷歌仅复制了让程序员在不同计算环境中工作,而无需抛弃一部分熟悉的编程语言所需的内容,谷歌的目的是为了创造一个为不同计算环境(智能手机)准备的,不同的任务相关的系统——为了创造安卓平台,以帮助实现和普及的目标。”

美国最高法院大法官斯蒂芬 · 布雷耶

需要注意的是,该判决专门针对 API 这一类别。“我们不会推翻或修改我们以前涉及合理使用的案例,例如涉及‘山寨’产品,新闻报道和简单复制的案例。”布雷耶表示,该裁决主要取决于 API 代码实现新创意表达的方式,这应该是在合理使用原则的范畴之内,“我们认为合理地使用,可以在确定计算机程序版权的合法范围方面发挥重要作用。”

在异议中,保守派大法官克拉伦斯 · 托马斯(Clarence Thomas)辩称,法院在实施和宣布这一准则之间建立了一种站不住脚的观点。

“国会拒绝在声明和实施代码之间进行明确区分。”托马斯写到,“但大多数的创造就在于这一部分特性。这种扭曲的分析结果带来一种观点,让人很难想象在任何情况下,声明代码仍将受到版权保护。”

旷日持久的版权诉讼,法官都上手写代码了

谷歌和甲骨文,在安卓的 Java 互操作性问题上已经争论了 10 多年,跨越了三个审判和两个独立的上诉。

1995 年,硅谷传奇公司 Sun Microsystems 推出了面向 Internet 的高级编程语言 Java,其易于上手、跨平台的特性使其不断发展,在多年发展过程中逐渐成为了业界开发 Web 应用程序的首选语言。

在 2005 年,谷歌则收购了 Android 公司,继续其主要项目——使用 Java 开发 Android 操作系统,在这期间谷歌拒绝了 Sun 方面的提议:若使用为期 3 年的 Java 许可,需支付 2000 万美元,外加谷歌与 Android 有关收入的 10%(上限为 2500 万美元)。

2009 年,甲骨文斥资 74 亿美元收购了 Java 的原始开发者 Sun。在卖身之前,Sun 决定将 Java 开源,然而几个月之后,甲骨文即对谷歌发起了诉讼。

本案最近一段时间的争议点,在于甲骨文能否在安卓的代码库中对大约 11,500 行代码(代表 37 个不同的 API)维护其主张的版权。谷歌独立开发了 API,但这些 API 是基于 Java 代码。甲骨文声称 Android API 的结构、顺序和组织严重抄袭,以致侵犯了甲骨文在 Java 代码上的版权。

甲骨文起诉提及的 37 个 API 如下:

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

另外,甲骨文曾经还起诉谷歌抄袭了 JDK 的 9 行代码:

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);

}

在 2012 年 5 月 18 日,加州北区的 William H. Alsup 法官主持的一次庭审中,争议焦点集中在一个名为 rangeCheck 的函数上。在甲骨文测试的共计 1500 万行代码中,只有这一部分是“逐字逐句”抄袭的,甲骨文律师采取鼓吹该函数重要性的策略试图证明谷歌的抄袭。为了验证甲骨文提出的可能性,Alsup 法官甚至亲自上手尝试写代码。

“在接手这个案子之前,我对 Java 一无所知。”这位法官说。“但是现在我已经写了很多代码,也已用很多其他语言编过程序,现在也还在编程。我写过一百多段 rangeCheck 这样的代码。我都能做到,你也能,这太容易了。”

当甲骨文的律师试图继续讲话时,法官变得越来越愤慨了,当时留下了这样的庭审记录

2014 年,一家联邦上诉法院推翻了加州法官 William Alsup 法官的裁决,裁定 API 可能受到版权保护。第二年,最高法院拒绝受理谷歌的上诉,让上诉裁决得以维持。但这一决定让谷歌的实施是否侵犯了 Java 版权的问题悬而未决,谷歌启动了案件的第二阶段,辩称 Android API 构成了公平使用。

2018 年,同一上诉法院裁定谷歌的操作是不合理使用,使谷歌面临高达 88 亿美元的赔偿风险。最高法院本周一的决定推翻了这一裁决,允许谷歌继续使用现有安卓代码而不受版权要求的威胁。

值得注意的是,时任总统特朗普的副总检察长已正式向最高法院请愿,要求保留上诉裁决,实际上他在这场斗争中站在甲骨文一边。

最高法院案件的口头辩论已于去年 10 月举行,为 API 所代表的内容开启了各种华丽的隐喻。在一次交流中,大法官布雷耶将甲骨文的 API 声明比作试图拥有 QWERTY 键盘的版权。“如果你现在让别人拥有它的版权,他们就会控制所有的打字机,这和版权没有任何关系。”布雷耶说道。

开发者:这是一个胜利,一个开始

这一“最终判决”引来了人们的热议,也让业界松了一口气:像谷歌与 Sun 在 Java 语言上的关系,以及开源软件、API 的内容借鉴在科技领域内并不少见。

谷歌全球事务高级副总裁 Kent Walker 对这次判决表示欢迎。“最高法院的明确裁决是消费者、互操作性和计算机科学领域的胜利。该决定为下一代开发者们提供了法律上的确定性,他们的新产品和服务将使消费者受益。谷歌感谢来自全国消费者同盟,美国图书馆协会以及知名公司、初创企业、美国领先的软件工程师和版权学者等众多组织的支持。”

另一方面,甲骨文的回应是抨击谷歌的技术统治地位。“谷歌的平台正在变得越来越强大,市场地位越发重要,这也让市场进入的门槛变高,竞争变小。他们窃取了 Java,打官司花费了几乎十年,以维护自己的垄断位置。这种行径正是全球和美国政府监管机构正在调查谷歌商业行为的原因。”甲骨文总法律顾问兼执行副总裁 Dorian Daley 说道。

在社交网络上,开发者们对于判决的讨论也很多,不过有人指出这次胜利可能程度有限。Hackernews 网友 jxf 表示:“虽然判决结果大快人心,但我认为这并不像我所注意到的一些新闻报道所声称的那样具有决定性。一个悬而未决的大问题是,API 是否具有版权?法院回避了这个问题,而是着眼于它是否合理使用。”

为了解决该案,美国最高法院仅需作出对于特定情况的判决。出于辩论的理由,法院认为复制的代码行可受版权保护,并着眼于谷歌对这些代码行的使用是否是“合理的使用”。也就是说,这种判断确实建立了一个先例,如果你复制 API 主要是为了匹配接口以便开发人员可以实现某些功能,那么你就处于合理使用的范围内。

无论如何,这是谷歌的一场大胜。

Java版权世纪大战,谷歌赢了甲骨文相关推荐

  1. 90 亿美元的“Java 第一版权案”终落幕:谷歌胜,甲骨文败!

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 谷歌与甲骨文之间 90 亿美元的版权纠纷官司,打了十几年,终于以反转的结局收尾了! 在此期间,美国联邦巡回上诉专门法院(U.S.Cour ...

  2. 谷歌与Oracle:Java版权大战现在牵扯到美国总统奥巴马

    谷歌和Oracle之间关于Java API的长期争论现在已经涉及奥巴马政府. 美国最高法院昨天发布了一份备忘录,要求美国副检察长韦里里在诉讼中简短陈述"表达美国的观点". 这意味着 ...

  3. 苹果真的赢得了“世纪大战”吗?

    原文地址: http://www.shudoo.com/news/index.php?ac=va&aid=4537 三星判赔苹果10.5亿美元         专利侵权,赔10.5亿美元,三星 ...

  4. Java侵权案落槌 谷歌胜诉甲骨文

    Java侵权案落槌 谷歌胜诉甲骨文 此文是为了记录一个历史时刻.google android系统之所以去java化,扶持kotlin上位,成为android官方开发语言,跟这场世纪官司密切相关(仅代表 ...

  5. 谷歌掐架甲骨文:揭秘 Java 侵权案始末

    据国外媒体报道,谷歌在本周向美国最高法院提起上诉,请求其介入谷歌和甲骨文之间的Java侵权案件,并进行最终判决.谷歌作为被告,甲骨文作为原告,两 大巨头围绕安卓和Java的战争已经进入了第四年.他们之 ...

  6. 谷歌掐架甲骨文:揭秘Java侵权案始末

    据国外媒体报道,谷歌在本周向美国最高法院提起上诉,请求其介入谷歌和甲骨文之间的Java侵权案件,并进行最终判决.谷歌作为被告,甲骨文作为原告,两大巨头围绕安卓和Java的战争已经进入了第四年.他们之间 ...

  7. 与甲骨文长达六年的版权拉锯,谷歌的胜利是软件行业的胜利

    谷歌与甲骨文之间长达六年的版权案终于结束,在这一场诉讼中谷歌最终获胜,省下了90亿美元的赔款. 即便是前几天的消息,似乎还能看见法官倾向于甲骨文.但美国旧金山联邦法庭陪审团今日做出裁决,认定谷歌安卓操 ...

  8. 我们饭碗保住了!谷歌胜,甲骨文败

    ↓推荐关注↓ Java 版权案最终结果:谷歌胜,甲骨文败了! 谷歌和甲骨文之间长达十年的 Java API 版权案,终于有了最终裁决结果. 当地时间 4 月 5 日,美国最高法院的大法官们六比二裁定认 ...

  9. 【历史上的今天】8 月 13 日:Oracle 起诉 Google,Java 版权案正式开启!

    透过「历史上的今天」,从过去看未来,从现在亦可以改变未来.历史中的 8 月 13 日,都有哪些互联网事件发生呢? 1973 年 8 月 13 日 ICCP(Institute for Certific ...

最新文章

  1. qt 控件 背景色 透明 除去边框
  2. New Phytologist:王建军等综述全球变化下的山地微生物组和生态系统功能
  3. Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)
  4. AD 脚本kixtart运用之五(用户电脑屏保设置)
  5. java项目怎么导出成jar_如何在eclipse将程序导出成jar文件
  6. DFS CCPC2017 南宁I题
  7. 停车场管理(C语言版)
  8. c语言将阿拉伯数字变为大写,使用C#实现阿拉伯数字到大写中文的转换
  9. Linux:进程间的相互作用(模拟两个进程,一个存钱,另一个取钱),进程共享内存,进程的互斥,进程加锁,c++和c实现
  10. PHP 读写 COOKIE
  11. 【2022考石开正攵★氵台】思维导图
  12. 小米忙着营销,麻烦带上技术!
  13. Windows环境下MySQL8.0.26下载安装详细步骤
  14. 和平精英吃鸡捏脸数据助手微信小程序源码
  15. Infor CloudSuite Industrial (SyteLine) 工序外协基本流程
  16. webpack - 基础配置教程
  17. 抖音html啥意思,用了这么久的抖音,你知道抖音到底是啥意思吗?
  18. Revit 命令添加下拉框
  19. Android系统Crash/ANR类型弹框
  20. Jackson对泛型的序列化和反序列化方法汇总

热门文章

  1. mysql慢查询日志默认在哪里_MySQL 慢查询日志
  2. .mdf mysql数据库,sql server mdf 数据库文件导入 mysql
  3. 学习虫师的《web接口开发与自动化测试1-5章》
  4. 一个c语言源程序至少包括哪些内容,一个c源程序中至少应包括一个什么函数_后端开发...
  5. 钉钉机器人推送表格图片
  6. Mapper method ‘com.LH.mapper.EmployeeMapper.insertEmployee‘ has an unsupported return type: cla 报错
  7. 如何成为新媒体百万大咖?教你5分钟学会制作电影解说短视频
  8. 电脑启动后屏幕会间歇闪烁类似刷新
  9. 把套接字改成阻塞或非阻塞模式
  10. 河南在中国数学类学会的人员分布