十一年专利大战,影响全球开发者,万亿美元软件产业。
“如果允许甲骨文对Java函数接口(ApplicationProgrammingInterface,简称API)进行版权保护,就好像是允许柯蒂键盘的发明者可以拥有所有电脑的知识产权一样。”
4月5日,伴随着大法官斯蒂芬·布雷耶(StephenBreyer)的精妙比喻,旷日持久的甲骨文诉谷歌侵权JavaAPI一案落幕。美国最高法院判决谷歌以6比2的判决比分胜诉,裁定谷歌在安卓操作系统中对甲骨文JavaAPI的有限复制构成合理使用(fairuse)。
受此消息影响,谷歌市值大涨,飙升近600亿美元。另一方面,甲骨文总法律顾问兼执行副总裁多里安·戴利(DorianDaley)开始在社交媒体质疑谷歌的技术统治地位,“谷歌窃取了Java,花费了十年时间打官司,以维护自己的垄断地位。”
长达十一年的版权纠纷已画上休止符,但给全球软件产业可能带来的持续影响仍有待观察。当软件产业开源、共享已成不可阻挡的潮流时,这个判例又将给中国的开发者和IT企业带来哪些利好?
11500行代码,两巨头缠诉十一年21世纪经济报道记者梳理发现,甲骨文与谷歌的专利案子历经十一年,标的88亿美元,历经三个独立审判,两个独立上诉。
软件工程师中具有极高人气的Java语言,是这场纠纷的缘起。谷歌公司在开发安卓系统过程中使用了SunMicrosystems公司开发的JavaAPI的11500行代码,而这家公司已于2010年被甲骨文收购。
2010年8月,甲骨文在加利福尼亚州北部地区法院起诉谷歌侵犯版权和专利。该案的法官威廉·艾尔苏普(WilliamAlsup)将案件审理划分成版权、专利和损害赔偿三个审理阶段,其中版权阶段自2012年开始审理。艾尔苏普法官认为,API根本不受版权保护,软件包、类和方法的命名以及排序方式不值得版权保护。
一个有趣的细节是,为了验证自己的观点,富有极客精神的艾尔苏普法官公开表示,自己已经上手尝试了一些编程工作,“我已经编写了诸如rangecheck之类的代码快一百次。我能行,你也能做到。这是如此简单。”
随后,案件上诉至美国联邦巡回上诉法院,听证会于2013年举行,判决于2014年发布。法院指出,要获得版权保护,作品必须是原创的。就甲骨文的API软件包而言,其总体结构是具有原创性的,因此其“结构、顺序和组织”是受版权保护的。该案被发回地区法院进行二审,根据版权保护下合理使用的豁免对谷歌的行为重新定性。这一次,谷歌面临着高达88亿美元的赔偿风险。
时间来到2016年,新一轮地区法院审判针对“谷歌是否构成合理使用”进行了辩论。陪审团裁定谷歌复用了37种JavaAPI和11500行受版权保护的甲骨文代码用于其安卓操作系统,属于合理使用。
随后,甲骨文再次上诉至巡回法院。法院认为,谷歌对Java的使用不属于合理使用范围。谷歌使用这些代码,是出于与甲骨文相同的目的和功能,甚至没有进行任何的更改与重写。在新平台的意义上,它也不是变革性的,因为其他依托Java语言开发的智能手机早于安卓。2018年3月,美国联邦巡回法院认定安卓侵权,甲骨文胜诉。
2019年1月,谷歌要求最高法院对与甲骨文之间的JavaAPI版权诉讼做出最终裁决。2019年11月,最高法院同意复审案件,双方也在第二年10月开展了口头辩论。受到新冠疫情的影响,裁决被延后至2021年4月。
这一次,多数法官认为,谷歌复制JavaAPI是一种变革性用途,在法律上是对这种代码的合理使用。判决书还指出,前述11500行代码仅占JavaAPI总计286万行代码的0.4%。
两个核心争议谷歌和甲骨文反复争论两个核心问题:一个语言的接口是否受到版权保护?对它的复用是否侵权?
甲骨文反复强调,既然软件受到版权保护,接口作为软件的一个重要组成部分,显然应该受到版权保护。
而谷歌方则指出,在讨论一切问题之前,首先需要详细辨析API的概念。三垣(海南)科技有限公司首席战略官、前甲骨文主任工程师黄湧向记者解释了API的概念。他指出,一个应用程序不需要也不可能所有的事情都自己做,绝大多数基本的操作,比如说输入、输出、一些基本的算法,都需要通过应用程序接口,也就是API去调用平台本身已经存在的功能来实现。
他介绍,Java运行环境(Runtime)和Java开发包(JavaDevelopmentKit)本身提供了一系列的基本功能,或者说是基本的框架(Buildingblock),而API定义了这个框架以及在程序中调用该框架的函数。应用程序根据API,通过正确的函数格式,可以调用Java平台的底层功能,从而使其运行起来。
“没有API,一个程序什么也做不了。即使最基本的Java程序,也需要按照API定义的格式,调用输入、输出、字符串处理等基本操作。”黄湧解释,JavaAPI是任何Java程序、Java应用的最基本的基石,也是Java应用运行的框架。一个Java程序,基本上就是逻辑(算法)实现加上API调用。
黄湧进一步解释,对于许多普通的软件工程师而言,他就是一个“APICaller”,主要工作就是“写好业务逻辑+API调用”。
“对于Java这种语言来说,智慧确实不在接口上。”北京一家大型互联网公司的一位软件工程师也向记
