图解Oracle诉Google Android对Java的巨额侵权案

 树大招风。这句话用到 Google 现已占统治地位的移动操作系统 Android 身上再合适不过了。旷日持久的 Oracle 诉 Google 在 Android 中不 “合理使用” Java API 的巨额侵权案已经接近尾声。本周,一个 10 人陪审团正在旧金山进行闭门讨论,如果 Google 败诉的话,将面临高达 90 亿美元的天价赔偿。下面我们通过几张片子来梳理一下这个案件缘由。


 

Oracle 诉讼的主题是 Google 通过使用 Java API 来走 “捷径”。当时 Google 为了尽快占领移动市场,包括 Larry Page 和施密特在内的高层都给了 Android 之父 Andy Rubin 巨大的压力。但 Rubin 如果能按期交付的话,则可以拿到 6000 万美元的奖金。值得注意的是,当时的 Java 还属于较具开放精神的 Sun 公司所有,后来才被创始人以专断著称的 Oracle 收购(收购金额为 74 亿美元)。

 


 

Oracle 提出,在众多使用了 Java 的公司里面,只有 Google 的软件实现未经授权。而 Google 则提出那些公司的授权是不一样的,授权里面还包括了实现代码、商标以及 Java 品牌推广。

 


 

诉讼的焦点在于什么是 “合理使用”。Oracle 的代理律师提出合理使用有 4 个要素。1 是用途是否商业性,2 是是否具有创造性,3 是使用是否实质性(持续、规模),4 是使用是否对市场构成伤害。

 


 

Oracle 举例说明,像新闻报道、评论、教学等(红色打叉部分文字)可以算是合理使用,但 Android 不符合合理使用的任何特征。

 


 

关于商业性。Google 不否认 Android 是商用的,但声称其他因素更重要。Oracle 则重点攻击 Android 的盈利,指出 Android 已有 420 亿美元的收入。

 


 

Oracle 还引用当时的 Google CEOLarry Page 的话证明 Android 大获成功,2012年 他说 Android 每天的手机激活数为 70 万。

 


 

Oracle 的观点是 Android 里面的 Java API 是非法复制的代码。不同 Android 版本的代码量略有不同,但所有版本的 Android 都包含有非法复制的代码。(注 1:此间还引发了对什么是 API 的定义之争;注 2:Google 确认新版的 Android N 将弃用 Java API改用 Oracle 开源的 OpenJDK )

 


 

Android 的相关代码也不应该被认为是 transformative 的,因为其 Java API 执行的目的与 Java 的是一样的。

 


 

这张片子是想证明 Android 并非从零开始开发。Oracle 指出 Android 代码中只有 23%是自己写的(其中 9%还是空行),利用第三方开源的部分占了很大一部分。

 


 

Google 强调自由使用 API 是业界的通行做法,但 Oracle 试图证明 Google 是知道 Java API 是受版权保护的。

 


 

对 Google 不利的是 Oracle 弄到了 2010年 在 Oracle 发起诉讼前几天写给 Andy Rubin 的一封邮件,里面提到他们试过替 Android 和 Chrome 寻找 Java 以外的替代方案,但那些替代方案都很糟糕,所以需要协商 Java 的授权问题。

 


 

Oracle 试图用这张图说明 Google 欺诈的事实。上面是按照时间顺序摘录的邮件内容,比如 2006年Rubin 承认 “java.lang 是受版权保护的”;程序员 Dan Bornstein 督促源码里面要 “多删除几个 J 开头” 的代码;而一位 Apache Harmon 的程序员则指责 Android 剽窃 Oracle 的知识版权。

 


 

对于 Oracle 来说,一大麻烦是前 Sun CEO Jonathan Schwartz 站在了 Google 这边。他明确表示使用 JavaAPI 是可以的。但是 Oracle 以 Schwartz 私下在邮件中抱怨 Google 不受版权法约束为由说他欺诈。

 


 

控辩双方利用了各种隐喻手法。Google 把 API 比作饭店菜单,而 Oracle 则拿 API 跟系列小说的书名、章节标题、中心句相提并论—比方说像哈利波特这样的小说。

 


 

有关 API 是否需要足够创意从而受到版权保护已经尘埃落定。但 Oracle 仍然紧抓不放,尤其是副总裁 Mark Reinhold 出席作证时。(用想要什么样的类?类的关系应该如何考虑?方法的关联性应该怎样?需要什么样的结果?类之间的接口应该怎样?等问题说明 API 不是那么简单的。)

 


 

Oracle 敦促陪审团不要把侵权代码量(牵涉到 JavaAPI 的代码仅占 Android 1/10)作为量刑考虑。因为他们的专家称之为 “Android 的核心” 并作出了这幅软件关系图。

 


 

最后 Oracle 提出了一个很难令人信服的观点:如果没有 Android 的话 Java 的业务本来可以做得很大。这种图想要说明 Java ME(移动版的 Java)一度是很成功的,而他们视之为 Java SE 的衍生品。

 


 

Oracle 证人把 Android 对其 Java 授权业务的影响描述为 “毁灭性” 的(注:好吧,如果 Oracle 花了 74 亿美元收购 Sun 为的是通过 Java 授权赚回来的话)。Oracle CEO Safra Catz 作证称:

许多我们以前要授权才能拿到拷贝的公司因为用了免费的 Android 之后就不再买我们授权了。

 


 

基于 Java 的手机(功能机)与 Android 呈此消彼长之势是没有异议的。问题是,Google 有没有不正当竞争呢?

API 是否开源自由使用是本案的焦点。如果 Google 败诉的话,势必会改变今后软件开发的游戏规则,对如何利用版权法保护软件也将产生深远影响。这个案子的判决不仅关乎 Google 的利益、Android 的前途,从更广的意义来说,还影响着在这个日益关联的世界里的开发者未来如何生存的问题以及开源的未来,结果如何,我们拭目以待。 

 

本文转自d1net(转载)

时间: 2024-09-22 22:36:57

图解Oracle诉Google Android对Java的巨额侵权案的相关文章

微软称Google Android可以使用.NET,徐汇区网站设计

最近Oracle起诉Google使用Java侵权的事件炒得沸沸扬扬,但微软开源技术中心总监Tom Hanraha说,微软不会禁止Google Android使用.NET 技术.Hanraha说:"像Oracle因Java而起诉Google这样的事情,微软是不会做的."但他也补充道,如果Android要通过Mono使用.net就需要遵循相关协议. 原文链接:http://opensource.solidot.org/opensource/10/08/29/0528253.shtml

上传Android或Java库到Maven central repository

主要介绍利用Sonatype将jar或aar提交到Maven的中央仓库. 是不是希望将自己的jar或是aar传到maven官方库中,在The Central Repository中可以被其他人搜索使用呢,是的话,往下看吧. 1.Sonatype简介 Sonatype使用Nexus为开源项目提供托管服务.你可以通过它发布快照(snapshot)或是稳定版(release)到Maven中央仓库.我们只要注册一个Sonatype的JIRA账号.创建一个JIRA ticket,然后对POM文件稍作配置即

用Go语言写Android应用 (2) - 从Android的Java调用Go代码

用Go语言写Android应用 (2) - 从Android的Java调用Go代码 上一篇我们讲到,Go在Android中的作用,就相当于NDK中的C/C++.上节我们学习了参照NDK的方式用纯Go语言来写应用. 但是,也正如在Android中,C/C++主要是通过JNI的方式被Java代码调用,本节我们就学习如何使用Java代码来调用Go代码. Java调Go的JNI例子 Java部分 我们首先来看这个简单得不能再简单的Java部分的代码,只有一个TextView,然后调用Go写的Hello.

Android 和 Java 内存泄露检测工具——LeakCanary

LeakCanary Android 和 Java 内存泄露检测. "A small leak will sink a great ship." - Benjamin Franklin 千里之堤, 毁于蚁穴. -- <韩非子·喻老> demo 一个非常简单的 LeakCanary demo: https://github.com/liaohuqiu/leakcanary-demo 开始使用 在 build.gradle 中加入引用,不同的编译使用不同的引用: depende

android 或java函数返回值,应该如何写才对

问题描述 android 或java函数返回值,应该如何写才对 下面是我遇到的问题: 解决方案 你这样肯定不行:你在你的这个方法里面注册来一个检测器来获取你需要的string,其中的onListDepartment()方法应该只会在你的getDepartmentName 方法只会才会调用,所以你的strDepartmentNameText应该时没有更新的.所以,想要得到strDepartmentNameText方法很多呀,比如在onListDepartment()方法直接使用,或者使用handl

分享一个Android和java调用RESTful Web服务的利器Resting

分享一个Android和java调用RESTful Web服务的利器Resting   当我们调用Web服务,往往是最终目标是取HTTP响应,将其转化为将在应用中呈现的值对象.Resting可以用来实现这一功能.Resting,在Java的一个轻量级的REST框架,可用于调用一个RESTful Web服务,并转换成响应来自客户端应用程序定制的Java对象.由于它的简单,resting是适合Android等手持设备.   resting目标•暴露简单的get(),post(),put()和dele

Android or java https ssl exception

详细分析Android及Java中访问https请求exception(SSLHandshakeException, SSLPeerUnverifiedException)的原因及解决方法.1.现象 用Android(或Java)测试程序访问下面两个链接. https链接一:web服务器为jetty,后台语言为java. https链接二:web服务器为nginx,后台语言为php. 链接一能正常访问,访问链接二报异常,且用HttpURLConnection和apache的HttpClient两

Google Android 初体验(吼吼。。。)

说在前面的:如果下面涉及的下载内容你下载不下来,用迅雷试一下,也许可以解决问题.以下文章是我从其他网站整理来的,当然别人的内容比较老,我是今天才弄好的,并辅以抓图.绝对下载包在2010-4-4是最新的^v^好了话归正题.   (严重抗议CSDN不让用公告JS)   1),下载SDK,          1.1)下载http://dl.google.com/android/android-sdk_r05-windows.zip          1.2)然后解压后放在一个目录比如:c:/andro

实现一个用于显示当前时间的Google Android 窗口小部件(AppWidget)

本文为原创,如需转载,请注明作者和出处,谢谢!     Android不用我多说了,这是Google在2007年推出的一款主要用于移动设备的操作系统.google在android sdk1.5中加入了appwidget api.通过这项技术,可以在android手机的主界面(Home界面)显示可以拖动的窗口,用于显示各种用户需要的信息.至于显示什么,就完全依靠开发人员的想象力了.OK,废话少说.我们先来体验一下如何开发一个显示当前时间的appwidget.这个appwidget每秒刷新一次,显示