鏖战九载,Google是否会因Oracle而弃用Java?


鏖战九载,Google是否会因Oracle而弃用Java?

在过往的九年间,Google因旗下全球第一大操作系统Android中是否合理使用Java的问题,已经与软件巨头Oracle大战了三百回合,但一直没得到最终的定论。

而如今,随着 Google官方博客中一则名为《Oraclev.Googleandthefutureofsoftwaredevelopment》声明的发布,标志着这一案件的最后一战即将打响。在声明中,Google 全球事务SVP兼首席法务官KentWalker 表示“我们请求美国最高法院审查Google与Oracle在软件接口使用方面长期存在的版权纠纷。案件的结果将对整个计算机行业的创新产生深远的影响。”

这意味着Google已经向美国最高法院提出审理与Oracle之间有关Java版权问题的请求。其中如果最高法院接受案件审理,那么Google或许还有翻盘Oracle的可能;但如果最高法院拒绝审理此次案件,那么Google只能执行去年3月份美国联邦巡回上诉法院的裁决结果,即Google使用Java开发Android系统的行为的确侵犯了Oracle的版权,需向对方赔付88亿美元。

回顾正常案件,这看起来仅是部分代码的事件为何会演变成为如今这般情景?Oracle的胜诉又将带来怎样的影响?最终是否会导致Google弃用Java?全球的软件开发者又该何去何从?

01

全球第一大操作系统Android:树太大招来了强风

提及这一事件的根源,其实还得从Google的Android系统讲起。

21世纪以来,各大科技巨头暗中发力,为移动互联网的新纪元做足了准备,其中Google也不例外。2005年,Google 在低调地将成立仅22个月的高科技企业Android及其团队收购后,迫切希望以此为契机能打破塞班统治的手机操作系统市场格局,抢占移动互联网下智能手机领域的先机。然而在美好的愿景之下,如何才能突破常规,打造出更出彩的操作系统生态?

当然首要因素是需要适用于诸多的开发者及用户,而这前提就需要Google去选择一门成熟且极具前景的编程语言为基础。

在彼时的环境之下,和广泛应用于桌面系统软件开发的C++、非面向对象的C语言、社区生态不够庞大的Python等语言相比,具有良好的跨平台特性以及拥有成熟生态系统的Java无疑中成为了Google最佳的选择。

不过值得注意的是,当时的Google并没有直接将JVM直接搬到Android上,而是自己使用JavaAPI设计了一个能够运行Android应用程序的虚拟机——Dalvik,在这过程中,Google并未向当时Java的拥有者Sun公司获取API的授权,而正是因此,才引发了后来两大巨头有关Java的版权之争。

02

Google与Oracle之间的9年之争

2009年,纯软件先驱Oracle以74亿美元收购了Sun公司、并接手了Java的拥有权。然而令人唏嘘不已的是,第二年即 2010年8月,Oracle就以一纸文书将Google告上了法庭,称迅速占领移动操作市场的Android系统侵犯了七项Java版权和专利,同时要求Google赔偿26亿美元。虽然Oracle律师AnnetteHurst曾正面回应,Oracle收购Sun公司并不是为了对Google发起版权诉讼。但是在收购第二年就急切地提出诉讼,这一行为免不了让业界人士的猜想一番。

对此,Oracle方坚持的态度是,Google明知道JavaAPI是受版权保护的,还故意而为之,目的就是为了让传统的Java程序员能很好地往Android平台过渡,为Android的生态带来丰富的应用程序。与此同时,Android背靠Java这棵大树,才会大获成功,为Google带来了巨大的商业价值。简而言之,没有Java,Android不会有今天的地位。

而另一面,Google则一直强调对于开源的Java,自由使用API是业界的正常做法,暗示着自己并不知晓JavaAPI是具有版权保护的。

不过,对Google颇为不利的是,Oracle在随后的对弈中,收集到了一封Android之父AndyRubin邮箱的企业内部邮件,其中提到Google内部试过替Android和Chrome寻找Java以外的替代方案,但那些替代方案都很糟糕,所以需要协商Java的授权问题。这意味着Google私底下都是知晓java.lang是受版权保护的。

在此不利的情况之下,2011年3月,Google聘用了Java的创始人JamesGosling来为自己站台。而自此之后,Google和Oracle之间的Java侵权事件也开始愈演愈烈:

• 2011年9月,Google和Oracle双方CEO第一次庭外和解失败。

• 2012年3月,Oracle不接受Google280万美元赔偿方案。

• 2012年5月,陪审团认为Google使用了9行范围检查的Java代码构成侵权,代码如下:

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

}

• 同月,WilliamAlsup法官推翻了陪审团认为Google侵权的意见,称API不应该受版权保护。随后,加州北区法院裁定Android系统没有侵犯专利,JavaAPI不存在版权,Google赢得短暂胜利。

• 2012年10月,Oracle不满判决结果,于是上诉至美国联邦巡回上诉法院。

• 2014年4月,美国联邦上诉法院判定API受版权保护,Google侵权,须赔偿,Oracle赢得胜利。

• 2014年10月,Google不服判决上诉至美国最高法院,请求高院介入。

• 2015年6月,美国最高法院驳回了Google在软件版权诉案中提出的上诉申请,维持原先的判决。

• 2015年10月,案件退回美国地区法院,由WilliamAlsup法官再次审理。

• 2016年4月,双方庭外和解会议再次失败。

• 2016年5月,旧金山联邦法院对该案复审。

• 2018年3月,美国联邦巡回上诉法院裁决,Google侵犯了Oracle的版权。

• 2018年8月,Google提出上诉,但美国联邦上诉法院宣布拒绝重新审理此案。

03

时针走到了现在,也正如文章伊始所述,Google寄最后的希望于最高法院。但无论最高法院受理与不受理,这将都是一场有关API的版权论。

作为将复杂软件系统结合在一起的粘合剂——应用程序接口,Google全球事务SVP兼首席法务官KentWalker在声明中表示道,“标准化的软件接口推动了软件开发的创新。它们让计算机程序可以相互交互,让开发者能够轻松地基于不同平台构建技术。”

同时,KentWalker认为:

随着智能手机应用程序的普及,我们往往会忽略开发者在各种不同平台上创建应用程序的难度。而在2008年,Google发布开源的Android平台改变了这一现状。它帮助开发者克服了更小的处理器、有限的内存和更短的电池寿命带来的挑战,同时为智能手机开发提供创新的特性和功能。最终带来双赢,即开发者可以更方便地构建新的应用程序,制造商可以创造出优秀的新设备,由此产生的竞争可以使消费者既享受更低的价格,也可以获得更多的选择。

Google根据计算机行业长期接受的重复使用软件接口的做法构建了Android,这些接口提供了一组命令,可以轻松实现常用功能,譬如按下“Ctrl”+“P”键盘快捷键,就可以触发打印功能,使打印变得容易。Android开创了一个变革性的新平台,同时让数百万Java程序员使用他们现有的技能来创建新的应用程序。而Java的创造者支持Android的发布,并称它“给(Java)社区的发展安上了火箭。”

但在2010年收购Java之后,Oracle起诉Google使用这些软件接口,试图通过事后改变软件开发规则且从中获利。Oracle的诉讼声称自己有权控制软件接口即软件开发的基石,由此也能够锁定投资于学习免费和开放Java语言的开发者社区。

旧金山法院最初裁定,在这种情况下,软件接口不具有版权,但该决定后来被驳回。陪审团曾一致地认为Google对接口的使用是合法的合理使用,但该决定后来同样被否决了。除非最高法院纠正这两个否决,否则这个案例将终止开发者自由使用现有软件接口为消费者构建新一代计算机程序的传统能力。就像我们都学会使用计算机键盘快捷键一样,开发者已经学会使用不同编程语言相关的许多标准接口。如果不撤销以上两次的否决,那么这些立场将把开发者有效地锁定在单一版权所有者的平台上,就好比是键盘快捷键智能用于一种类型的计算机上。

04

Google胜不了或许会放弃,Oracle赢了又怎样?

对于事件的最终结局,现在还存在很大的不定性。在Google看来,除非最高法院介入,否则当前联邦巡回上诉法院裁决将对软件行业带来颠覆性的冲击。但其实自从和Oracle杠上之后,Google在全力上诉的同时似乎也为自己做好了败诉的退路:

• 2016年,Google宣布Android系统采用OpenJDK;

• 2017年的GoogleI/O大会上,Google宣布将Kotlin作为Android官方支持的开发语言;

• 过去一直有传言,Google秘密研发的Fuchsia系统在未来将会统一Android和ChromeOS系统,而从Fuchsia项目此前提交记录上显示,它或将支持Java了。


鏖战九载,Google是否会因Oracle而弃用Java?


而对于Oracle而言,若这一案件胜诉,最终又将收获到什么呢?

事实上,从近几年的科技行业发展来看,迫于Oracle昂贵的软件服务费用,亚马逊、SPA、Salesforce等巨头们纷纷发出“弃用Oracle”的声音。与此同时,在Oracle宣布JDK8将收费以及OracleJDK无法免费商用之后,不少开发者也诞生弃Java而转其他编程语言的念头,对此亚马逊甚至自己研发了一款OracleJDK的替代品—— Corretto,以备不时之需。

整体而言,此次Oracle倘若胜诉,显而易见的是,其必然能够收到来自Google 的高额赔偿,且能够颠覆了行业中对于API固有的“无版权”定义,但估计也难免不会再一次地成为众矢之的。

05

开发者何去何从?

不过,对于绝大多数的Android开发者来说,因Google和Oracle之间的官司,让自己直接放弃成熟且拥有庞大技术支持的Java,似乎也显得不现实。

而且事件发展到如今,事实上,早已不单是Google和Oracle两家的商业之争,而是整个软件行业的标准化的问题。如果此次事件中,联邦巡回法院的最终判决获得最高法院的支持,这意味着API是受版权保护,那么它可能会迫使软件行业的开发方式发生巨大变化。

过往,软件开发者可以直接基于已创立的软件平台和标准功能进行开发,这样能确保他们的新产品与已经存在的产品兼容。有时,这种兼容的软件会打包到开源库中,供其他人免费使用,并且可以与其他程序捆绑在一起以生成更大的软件包。彼时的开发者普遍认为API不受版权保护,且企业也并不担心自己开发的项目是否中引入了第三方API库。

现在,联邦巡回法院的裁决倘若真的开始执行,那么可能导致很多引入第三方的API软件会在一夕之间受到版权侵权索赔。对此,美国最高法院最终是否会受理次案件,目前尚未可知。如果受理,预估计今年秋季会有消息。

而针对这一现状,HackerNews上的网友也展开的激烈的讨论(https://news.ycombinator.com/item?id=18993953):

• @int_19h:鉴于Oracle此前曾在法庭上胜诉,人们至少要接受法律真正允许API受版权保护的可能性。但如果是这样,法律需要迫切修改API的性质,至少从共有的角度来看,是互操作性问题超越其他一切。如果企业为了自己私有的商业利益而对API进行版权保护并阻止竞争对手使用自己的API,那么这对整个行业来说是非常不利的。

• @toyg:Oracle实际上并不缺钱。它们之所以这么做是想要将长期受苦的客户从本地产品往云端产品过渡。但是现在很多人不相信他们,你可以和一条每年出现一次的鳄鱼进行交易,但是在你使用SaaS时,你基本上是一直在鳄鱼身边行走,希望它不会在提前一天通知你的情况下以更高的价格咬你。在这种情况下,让Google为Android交税是值得的。

• @nradov:控制主流的平台具有很大的优势。即使Oracle没有从Java中获得多少直接的收入,但是他们也可以用它来阻止竞争对手。

从道德的角度来看,Google在2005年破坏了Java生态系统,而不是就版权问题和Sun进行谈判,他们的行为很不合理。但是我还是希望Google可以赢。

【如果你喜欢EDA365的文章,记得关注和点赞哦!】


分享到:


相關文章: