当前位置:首页 > 案例交流

案例交流

美最高院甲骨文诉谷歌案全景解析

来源:IPRdaily 发布日期:2021-07-01 阅读:12

  安卓公司成立于2003年10月,起初的目标是为数码相机开发操作系统,但其创始人后来意识到该市场不够大,于是致力于将安卓项目打造为与移动版Windows、塞班等并肩的移动设备操作系统。谷歌公司于2005年7月收购安卓公司时,该项目还鲜为人知。但目前安卓已经成为移动设备(智能手机、平板电脑)上最流行的操作系统。安卓其实是一个内核基于Linux的开源的操作系统,但大部分(国外的)安卓设备都预装有谷歌公司的专有软件——包含Chrome浏览器、谷歌商店(Google Play)、谷歌地图等的谷歌移动服务(Google Mobile Services)。而国内智能手机的操作系统则几乎都是安卓的各种分叉(fork)。

  Java语言是太阳公司(Sun Microsystems)于1995年5月开发的编程语言,名字取自印度尼西亚的爪哇(Java)咖啡。太阳公司宣传Java可以“一次编写,随处运行”(write once, run anywhere,WORA),意味着Java代码可以在所有支持的平台上运行,而无需重新编译。2010年1月,甲骨文公司完成了对太阳公司的收购,对价为74亿美元。目前,Java仍然是最受欢迎的编程语言之一,被世界各地的程序员广泛使用。

  Java语言是安卓系统成功的关键因素,很多安卓app都是由Java语言编写的。除了因为Java语言受众广、简单易懂之外,Java的WORA特性也许是谷歌选择Java的最主要考量。一个众所周知的事实是,为一个硬件架构编译的程序无法直接在其他硬件架构下运行。例如,微软的Surface Pro系列笔记本/平板电脑具有不止一种CPU,ARM架构的Surface Pro X无法运行为x86架构(绝大多数个人电脑的架构)编写的可执行文件(扩展名为exe)。而安卓生态系统的硬件一直是碎片化的,不同厂商采用的CPU各不相同。为照顾到这一现状,安卓选择了具有跨平台特性的Java。

  为了理解为何Java代码可以不受限制地在任意系统上运行,以下对Java技术(或Java平台)进行简单说明。

  Java主要包括3个部分:Java语言、Java虚拟机以及Java类库。在我们谈起Java的时候,有时仅仅是指Java语言本身,有时则是指包括这3个部分的Java平台(Java平台标准版即Java SE)。Java作为一种开源的编程语言并无太多特别之处,任何人都可以自由地使用该语言来编写软件代码。如下的Hello World的例子就是用Java语言编写的。

 

  但Java的特殊之处在于其除了一套编程语言之外,还包括Java虚拟机(Java Virtual Machine, JVM)和相应的库。虚拟机,顾名思义是一个虚拟的机器,其介于实际的硬件与应用程序之间,应用程序并非直接在实际的硬件上运行,而是在虚拟机上运行的。这样一来,Java程序就可以与实际的硬件架构无关地实现独立的跨平台运行。

 

 

  库(library)则可以简单理解为能实现一些常用功能的代码集合。通过将可重复利用功能的代码作为库,程序员不必重复编写相同的代码,在使用到相应的功能时调用相应的库即可,从而可以节省资源并减少出错。但由于Java程序是在虚拟机上运行的,并不直接调用特定操作系统中内置的库,因此,Java平台提供了大量的标准库供开发者使用。

  API则是应用程序编程接口(Application Programming Interface)的缩写,它是一种定义程序或库如何进行交互的函数。例如,用户可以通过API向程序发送请求,并接收程序返回的响应。如果认为纯文字描述过于抽象,那么通过以下微信小程序的API列表可以对API有更加感性的认识(https://developers.weixin.qq.com/miniprogram/dev/api/):

 

  以“获取系统信息”的wx.getSystemInfo这一API为例,其他程序(或者用户)可以通过这个API从微信小程序获取运行微信的设备品牌、微信版本号等信息。由此可见,API不同于一般意义的软件代码,而只是一个接口(interface)。程序员可以通过API来访问库并实现某些功能,而无需知道库的内容以及库是如何运行的。(在一些解读谷歌上诉甲骨文案件的文章中,将部分的interface翻译为界面,进而分析起图形用户界面GUI的法律保护,似乎偏离了主题。不过提起GUI的法律保护,这篇由大牛撰写的文章《图形用户界面(GUI)如何有效保护?》分析得倒是比较透彻,笔者时常找出来回味,读者也可以参考阅读。)

 

  以上是对Java技术的简介。虽然太阳公司无法独占开源的Java语言,但Java平台的相关技术(例如Java SE类库)却曾经是太阳公司专有的。这意味着他人在使用Java平台时,需要从太阳公司获得许可。彼时也有团体试图编写一套开源的Java平台,比如阿帕奇基金会的Harmony项目(2005年5月-2010年9月),但由于Java的标准库非常成熟且丰富,因此净室(clean room)开发出的库并不完整且兼容性不好,有的与标准库相比性能欠佳。

  谷歌公司曾就Java SE的许可问题与太阳公司进行过磋商,后者提出了约5,000万美元的报价,但协议最终未能达成,双方各执一词。谷歌公司担心太阳公司会由于将Java技术引入到安卓系统中而染指这个开源的移动操作系统;而太阳则声称谷歌的目的是从Java分叉出一个谷歌版本,并损害Java的跨平台特性。在磋商失败后,谷歌公司选择从零开始开发Java SE类库的净室版本,但是在其中使用了37个来自JAVA的API,共涉及约11,500行代码。谷歌公司还独立开发了针对移动设备(内存小、带GPS功能)优化的Dalvik虚拟机,且Dalvik虚拟机与Java虚拟机并不兼容。

  2013年,谷歌公司发布了安卓4.4版Kitkat,删除了Dalvik虚拟机,并使用安卓Runtime作为替代,而后者不再包含任何Java源代码。

  由于安卓大获成功并且使用了Java技术,在对太阳公司收购完成后半年的2010年8月,甲骨文公司在加州北区地方法院对谷歌公司提起了专利侵权和版权侵权的诉讼,并在之后向谷歌公司索赔90亿美元(略高于收购价格)。折算下来,1行代码的索赔额高达80万美元,有人曾经质疑甲骨文公司起诉谷歌的目的就是为了覆盖掉收购太阳公司的成本,遭到甲骨文公司的否认。

  作为对比,苹果公司从一开始就不需要Java,也不需要考虑跨平台的兼容性问题,因为苹果的移动端设备一直使用的是封闭、统一的硬件架构,app可以直接在操作系统上运行。而早期的Java虚拟机在一定程度上降低了Java程序的运行效率。这就是为何在智能手机发展的初期,苹果手机可以在硬件参数与安卓手机持平甚至更差的情况下,却可以提供更流畅的操作体验的原因。

  在讨论本案的法律问题之前,有必要再次简要回顾本案的事实。如下图所示,

 

  谷歌公司在安卓系统中使用Java技术的主要目的是为了让更多熟悉使用Java语言编程的开发者加入到安卓这个新兴的生态中。因此,谷歌公司不需要改动Java语言本身(虽然自2019年起谷歌公司开始主推Kotlin语言作为开发安卓app的首选语言以代替Java)。同样,由于Java程序是由众多开发者开发以在安卓系统上运行的,因此Java程序也与本案无关。而且,安卓上的库和虚拟机(从Dalvik到Android Runtime)是谷歌公司独立开发的,谷歌公司主要的问题在于其复制了Java的37个API(源自阿帕奇的Harmony项目)。

  甲骨文公司对谷歌公司发起的诉讼包括两个案由:专利侵权和版权侵权。甲骨文公司方的故事是,谷歌公司明知道Java,但是却没有像其他公司那样为Java付费。免费的安卓系统在移动端市场大获成功之后,甲骨文公司在该市场的Java技术许可收益大受影响。而谷歌公司方的故事则是,重复利用应用程序的API在软件行业已是多年的惯例。甲骨文公司没能用Java统一手机市场而眼红谷歌,因此发起了诉讼。

  关于专利侵权,甲骨文公司认为谷歌公司侵犯了其6,061,520(用于进行静态初始化的方法和系统,中国同族:CN1119756C)和RE38104(用于解决生成代码中数据引用的方法和设备,无中国同族)这两项专利。谷歌则主张其技术方案未落入专利保护范围。对于前一专利,谷歌辩称其使用的是解析,而非权利要求所述的"模拟执行"来对静态初始化进行优化。对于后一专利,谷歌辩称其指令不包括符号引用。地区法院的陪审团裁定专利侵权不成立。甲骨文公司未提出上诉,因此,本次的专利纠纷暂且不表。

  本案的焦点问题在于版权侵权,而软件的版权保护与其他作品又有所不同。

  版权是直接受工业革命的影响而诞生和发展的,其传统的保护客体是文学艺术领域的作品。版权法的一个基本原则是版权不保护抽象的思想(此处的思想也可以是功能、事实等)而只保护具体的表达,我国的著作权法虽然没有关于思想表达二分法的明确条文(软件保护条例中有对此的专门条文),但这一原则在我国的司法实践中是普遍得到法院认可的。

  软件的出现给传统的版权体系带来了挑战,软件虽然是一种文本,但是几乎没有人会像阅读小说那样去阅读软件代码;其主要作用在于被执行时使得计算机完成一定的功能,而功能又是版权法所排斥的。对于软件如何进行法律保护在历史上曾经有过多年的激烈争论,后来美国决定将软件代码视为文字作品纳入现有的版权法体系,而非独立针对软件保护进行立法。这一立法体例也被包括我国在内的绝大多数国家所接受。但由于软件的功能性文本的性质,决定了其版权保护也较为特殊。

  本次纠纷的版权侵权部分的焦点问题之一在于:API是否具有可版权性。美国最高法院没有正面回答该问题,最高院的多数意见认为谷歌借鉴Java API构成合理使用,因此,无论API是否具有可版权性,都不会影响案件结论。地区法院的结论是API没有版权,法院认为因为API并非是实现功能的具体代码,而只是对具体代码进行调用的函数。因此,只要具体代码不同就不构成版权侵权,API(调用函数)是否相同是无关紧要的。但上诉法院(由于本案涉及专利,因此上诉法院是联邦巡回上诉法院)推翻了地区法院的结论。上诉法院认为,API的设计具有版权法所要求的独创性,因此应该受到版权法的保护。

  由于API并非是具体的实现代码(无论是人类可读的源代码还是机器可读的2进制目标代码都同样受到版权法保护),因此在甲骨文用API起诉谷歌之前,业界普遍认为使用他人的API是没问题的。包括微软、IBM、计算机协会、互联网协会等均普遍支持谷歌公司。例如,GNU/Linux就借用了一些Unix的API。一些开源软件在与私有服务进行交互时,也不可避免地要使用或复制该私有服务的API。如果甲骨文主张的侵权逻辑成立,那么这些开源代码,从底层的操作系统到应用层面的程序都面临未经许可使用或复制API的诉讼风险,并且很多小型开发商并没有资源编写独立的API。因此,最高院应该是考虑到本案可能带来的寒蝉效应,因而未对API是否可版权发表意见。

  本次纠纷的版权侵权部分的另一个焦点问题在于:谷歌公司对Java API的使用是否属于合理使用。地区法院的陪审团裁定,谷歌公司重新实现了37个Java API属于合理使用。但是否属于合理使用是一个法律问题,因此本文重点分析法院的观点。美国版权法第107条列举了合理使用的4个要素:1.是否具有转换性;2.作品的性质;3.使用部分的量;4.对市场的影响。我国著作权法并没有合理使用条款,一般认为著作权法第22条可以类比“合理使用”。但不同于英美法系的概括性规定,作为大陆法国家的我国对于合理使用是穷尽式例举(2021年版的著作权法增加了兜底条款,但限于法律和法规规定),如果严格地机械适用该条款,那么会极大限制合理使用的情形。因此,在司法实践中,我国法院有时也参考美国版权法提到的上述4个因素,以灵活开放的标准对合理使用进行判断。在软件和网络领域,我国法院曾经认定过提供网页快照和缩略图快照属于合理使用,不构成版权侵权。

  回到本案,关于合理使用,美国上诉法院和最高法院的多数意见给出了截然相反的观点。上诉法院认为谷歌的行为不满足4个要素的任何一个,因此不是合理使用;而最高院的多数意见则认为谷歌的行为构成合理使用。

 

要素

联邦巡回上诉法院

最高院

1.使用目的和性质

谷歌将Java API用于与甲骨文相同的目的,没有一点改变且没有任何转换性。

谷歌有限使用的Java API是为不同的计算环境(智能手机)创建新的平台(安卓)。

2.版权作品的性质

计算机代码具有功能性。

由于API是声明代码而非具体实现,因此更适合合理使用。

3.使用部分的量

谷歌复制的11,500行代码中只有170行是其必须使用的。

谷歌复制的11,500行代码占0.4%,目的是让程序员适应新开发环境。

4.对潜在市场的影响

Java智能手机早于安卓,安卓出现后Java的客户向甲骨文要求非常高的折扣。

安卓并非Java SE的替代,谷歌的行为不会影响甲骨文的潜在市场,反而甲骨文由于安卓的出现可能受益。

 

 

  从两级法院的结论可见,合理使用是一种极为个案化的分析方式,结果的可预测性较差。但无论各方对于此案还有何种争论,也无论最高院的反对意见多么有道理,美国最高法院以6-2的多数意见已经对此事盖棺定论了。美国最高院的判决并非像上诉法院那样提出了颠覆性意见(复制API构成版权侵权),而是肯定了软件行业一直以来使用他人API的惯例,维系了现有秩序。