前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java战争的回忆,请善待Java

Java战争的回忆,请善待Java

作者头像
Java帮帮
发布2019-08-26 16:24:04
7320
发布2019-08-26 16:24:04
举报

本文来自微信公众号:金捷幡(ID:jin-jiefan),作者:金捷幡,封面:拉里·埃里森(东方IC)

2019年5月,彻底撕破脸的特朗普掀起对华为的战争,谷歌被迫吊销了华为的Android授权。开源软件的版权问题,使我不禁想起软件行业的一宗惊天巨案。

看过《手机基带芯片故事》的朋友,一定记得乔布斯曾强烈表达过对谷歌抄袭苹果的愤怒:“我要用尽苹果400亿美金的存款,发动一场热核战争,来摧毁Android,because it's a stolen product。”

千万别认为乔帮主只是说着玩的。

虽然他不幸去世多年,他最好的朋友甲骨文(Oracle)董事长拉里埃里森仍然在坚持这项未竟的事业。

桀骜不羁的埃里森在回顾乔布斯临终情景时动情地说:“他已经被癌症消耗光了,他实在太累了又太痛了。虽然他绝对是我见过最坚强的人,但他还是最终放弃了和死神的对抗。”他最后停药的决定震惊了所有人,三天后帮主驾鹤西去。

作为惺惺相惜的英雄,埃里森当年曾经想把苹果买下来还给乔布斯。

2009年4月,甲骨文宣布以74亿美元收购了Sun Microsystems。埃里森面对IBM的竞价毫不犹豫,最终以超过Sun市值30%的价格将其拿下。

2010年收购完成后,埃里森随即对谷歌宣战,起诉Android对Java的侵权。

Java之父James Gosling是个加拿大人,他在Sun工作了26年。直到Sun被甲骨文收购后,他选择了离开。

有谣传说,Gosling因为学C++太难而在其上去掉了很多繁复的特性做出了Java。这个不足为信,因为Gosling是计算机圣殿卡内基梅隆的博士,学个语言对他来讲太小儿科了吧。

Java是原本设计用于机顶盒之类的小型设备上的,但出乎任何人的意料,互联网大潮来临后,Java编写一次、到处运行的特性被各种应用发挥到了极致。在企业级软件上,Java更是整合各种不同软硬件和操作系统做出分布式应用的神器。

二十年来,Java除了受到.Net的小型挑战外,由于拥有最成熟稳定的企业应用组件,其互联网的支柱地位仍牢不可破。

不仅在企业级市场呼风唤雨,另外一个意外的选择,使得Java在移动终端也大放异彩。

Android之父安迪鲁宾1989年进入苹果工作,那时他还是个小工程师。因为他之前在蔡司机器人部门工作,苹果的同事给他起了个外号:Android(机器人),当时谁也不知道,这个机器人在多年以后成为苹果最大的竞争对手。

当时乔布斯已经被驱逐出苹果。被老乔请来“不卖糖水改变世界”的CEO John Sculley,其实远没有后来外界评论的那么不堪。他把苹果营业额扩大了10倍,而且主持了大屏手持电脑Newton的开发。

John Sculley把专门做手持操作系统的部门分拆成General Magic(通用魔法公司,这个名字好赞),而这家公司成为未来智能手机的黄埔军校。

安迪·鲁宾在通用魔法公司汲取了充足的养分,后来在2003年创建了Android公司(Android Inc.)。Android系统最早是设计给数码相机用的,数码相机本身硬件就千差万别,所以Java优秀的跨平台特性就被选中了。

结果这个平台做出来后,发现用于手机也很适合。2005年,正在寻找手机操作系统的谷歌看中并收购了Android公司。

2007年1月,乔布斯发布了iPhone,极大地震撼了谷歌。为了赶时间,谷歌来不及更改Android所用的开发语言Java,这给后来埋藏了重大的祸根。

当然,Java充足的程序员群体和便利的开发特性,对Android本身来讲也是有极大帮助的。

2007年11月,就在第一代iPhone上市4个月后,谷歌便匆忙开源了Android并成立开放手机联盟(OHA)。这时的Android连个半成品都算不上,但Java的地位被牢固地确定了下来。

和苹果iOS运行原生Object C编译的机器码不同,Java必须跑在虚拟机上。这使得Android在速度上天然存在问题。谷歌为了尽可能提高速度,自己做了Dalvik虚拟机(DVM)。

DVM采取了很多“作弊”的加速手段,比如预读取用户装的很多APP(APK)并存入缓存,比如把Java Bytecode替换成DVM的指令。这些手段的副作用之一,就是使Android需要比iPhnoe大得多的内存,而且手机用的时间越长,APP越多,系统越慢。

这些“作弊”手段,也使得谷歌的Java虚拟机和Sun原版虚拟机完全不兼容。而Sun对这种分裂Java的行为不能容忍。

谷歌确实去找Sun申请过Java授权,但是Sun要求谷歌分享对Android分支的控制而遭到拒绝。谷歌当时还拒绝了Sun提出的三年支付约5000万美元授权费用的要求,而后来Sun归了埃里森以后,这数字提高到50亿美元。

在未获Java授权的情况下,谷歌采取了“洁净室”这种反向工程手段(可参考:《BIOS和PC的故事》)开发了自己的Java库。这是一种类似抄袭但又不明显违法的手段。

但是,谷歌仍旧保留了Sun Java原有的一些编程接口(API),后来被甲骨文抓住了把柄。

甲骨文总架构师Edward Screven在法庭作证说,他曾和埃里森讲,拿下Java是收购Sun的唯一重要目的。

虽然Java之父Gosling在离开甲骨文后短暂加入了谷歌,他在接受采访时表示,他认为谷歌当年确实糊弄了Sun。

开源软件只是意味着你能看到全部源代码,这并不表示你可以随意使用。对于Java来讲,程序员是可以免费使用的,但是对于企业来说还是需要获得授权的。

而API是否受版权保护,这个在美国法律界也产生了巨大的分歧。如同你做菜的配方可以受版权保护,但是点菜的菜单也受保护吗?

甲骨文和谷歌两大巨头旷日持久的法律大战,至今已经9年还未打出最终结果。其间双方在各级法院各有胜负,法官和陪审员都对此案看法不一。

埃里森和拉里·佩奇都亲自上庭作证,这在美国大公司诉讼中极为罕见,而每一次埃里森都拒绝和解。

2018年3月,联邦上诉法院判决甲骨文胜诉,这意味着谷歌应赔偿高达近百亿美元。

谷歌则第二次将此案提交到美国联邦最高法院。在四年前最高法院拒绝审理后,这次九位大法官似乎被迫要做出判决了。

众所周知,美国是法官立法的国家。联邦最高法院的判决会深远影响软件行业的很多悬案。

法官们还要判定的是,谷歌的抄袭行为是故意侵权还是合理使用。甲骨文已经举证说Android在10年间为谷歌赚了超过420亿美元。

对甲骨文不利的是,Android已经是大到不能倒了,没有法官会支持禁止Android手机的销售。正因为如此,谷歌一直把案件拖了九年。

而在这段时间内,谷歌把Android的Java库转到OpenJDK,把DVM转到ART,把Java语言转到Kotlin语言。

2019年4月底,联邦最高法院正式发文给美国司法部,要求联邦检察官协助断案。这似乎是美国三权分立的一个漏洞,但也说明了此案判决难度极大。

似乎大多数程序员都很厌恶甲骨文对开源的霸道行为,但是埃里森为乔布斯“复仇”的举动又让人觉得很感动。毕竟谷歌确实存在“抄袭”苹果和Java的行为,并由此获取了巨额利润。

考虑到对乔帮主的感情,以及近期的华为事件,我内心还是希望谷歌最终会为此付出代价。


这一场官司打了将近十年,谷歌和甲骨文关于 Android 系统 Java 版权的纠纷即将迎来尘埃落定之时。在眼下这个时间节点,让我们再来回顾一下这“近十年第一版权案”背后那些不为人知的细节。

谷歌公司将这一案件称为“近十年第一版权案”。

很多朋友可能不太清楚,这里说的是甲骨文方面最近十年以来针对搜索巨头提起的数额高达 90 亿美元的版权侵权诉讼。谷歌当初曾将 11500 行 Oracle Java 代码整合至面向智能手机与平板电脑的 Android 平台,甲骨文公司随后于 2010 年就此提起诉讼。

自那时以来,Android 一步步发展成为全球范围内最受欢迎的操作系统,并运行在超过 25 亿台设备之上。

谷歌方面曾在美国地方法院一级获得两次胜诉。但每一次,相关判决都被上诉联邦法院所推翻。如今,谷歌开始请求最高法院介入审理此案,并递交了来自 175 家公司、非营利性组织以及个人所签署的 15 份支持谷歌请求的法庭之友诉书。

最终,美国最高法院的九位法官可能决定甲骨文与谷歌之间版权案件的结果。

这是相当紧迫的问题:版权法对于应用程序接口或者说 API,到底会提供怎样的保护?这听起来非常复杂,但实际上此类接口在如今的软件当中可谓无处不在。这些接口构成了由不同企业乃至独立开发商所开发的所有不同软件应用之间的联结。

更具体地讲,这些应用程序必须首先能够通过此类接口彼此无缝交互,而后才能让一切安装在我们智能手机上的应用程序(例如 Pandora 或者 Uber)与手机上的操作系统(例如 iPhone 上的苹果 iOS)进行通信。如果平台所有者可以通过版权渠道声明对这些接口的所有权,则会给创新与竞争关系带来诸多限制。换言之,其不仅能够确定谁有资格在自己的平台上编写软件,同时正如我们在此次案件中所看到,其甚至可以阻止其他开发商编写出竞争性平台方案。《哈佛法律与技术杂志》对此案的重要意义高度关注,甚至在去年发行了一本长达 360 页的特刊进行讨论。

作为此次纠纷当中的谷歌支持方,美国反垄断研究所律师 Randy Stutz 表示,“如果上诉法院的裁决成立,则很有可能导致软件行业中的各大主流企业陷入困境。”

而在另一方面,甲骨文公司则表示案件已经没什么争议。其基本论点在于:谷歌公司需要通过谈判获得 Java 代码的使用许可,但其在未能达成协议的前提下仍使用了部分代码。(这种说法确实正确无误。)现在,是时候为此付出代价了。

甲骨文公司总裁 Michael Hurd 在甲骨文 OpenWorld 2011 技术大会上。

甲骨文公司在递交给最高法院的诉书当中,甲骨文公司律师指出“在 Android 出现之前,每一家希望使用 Java 平台的公司都需要获取商业许可……包括黑莓、诺基亚以及 Danger 等智能手机制造商。”

甲骨文公司宣称,如果不是 Android,甲骨文很可能已经凭借着自己的 Java 构建起一套主流智能手机平台。(Java 最初是由 Sun Microsystems 公司所编写,而甲骨文方面在 2010 年收购 Sun 后不久即开始发起诉讼。)甲骨文公司的律师还对前文提到的观点——即任何有利于甲骨文的判决都将给软件行业带来可怕后果,表示嘲笑。他们在诉书中写道,尽管谷歌提出了“天幕正在坠落”的观点,但软件行业并没有在 2014 年 5 月或者 2018 年 3 月(在这两个时间点上,美国联邦上诉法院驳回了有利于谷歌的两项关键性裁决)之后发生崩溃。

事实上,甲骨文公司也拥有自己的支持者阵营,而且同样握有热情洋溢的法庭之友诉书。其中的签字确认方包括 BSA 软件联盟的多位成员,例如 Adobe、苹果以及 IBM 等公司。

值得注意的是,对于这样一个与软件接口相关的案件,最高法院的关键性参考先例实际上源自 1879 年。很明显,当时的诉讼与智能手机平台毫无关系,但却确实定义了版权的限制范围并解释了版权与专利之间的区别。在当时的纠纷当中,Charles Selden 撰写并出版了一本书,其中列出了一种记账方法。这本书中提出了一系列可用于实现这种记账方法的空白表格。此后,W.C.M. Baker 开始推销自己的另一套表格,其同样能够实现 Selden 提出的方法,而且与书中的表格形式非常类似。

Selden 的遗孀起诉 Baker 侵权但却最终败诉。基本上,Joseph Bradley 法官在审判意见中解释称,她试图利用版权来保护 Selden 在书中提出的思想。在他看来,虽然专利能够保护想法,但版权本身只能保护表达——在本案当中,也就是 Selden 用于描述其记账方法的特定词语。最高法院在裁决当中表示,“版权……不能向提出者给予他所提出的操作方法的专有权。(Selden 并没有为自己的记账方法申请专利。)由于 Selden 对于自己的方法不具备垄断权,因此他也就无法以垄断方式控制执行此方法所需要的各种形式。”

国会后来将法院在 Baker 与 Selden 一案中的裁决思路写进了联邦版权法规,其中指出版权不得“扩展至任何用于描述受版权保护之成果的想法、程序、过程、系统或操作方法”。

或者用更直白的语言来讲:就算有人出版了一本叠衣服的书,我们也用不着担心自己照样叠衣服会引发什么麻烦。

140 年之后,甲骨文与谷歌之间的纠纷正是基于以上历史背景。(顺带一提,甲骨文公司在 Java 方面确实拥有自己的专利权,而其对于谷歌的诉讼最初也包含有专利权要求。然而,陪审团在 2012 年认定这些专利权要求不成立,甲骨文并没有就此提出上诉。因此,目前的甲骨文案件已经完全落在版权主张之上。)

为了裁决甲骨文一案,最高法院必须深入理解应用程序接口到底是什么。此类接口由两大关键部分组成:其一是速记标签,用于确保软件开发人员能够在希望执行某项任务时将其写入程序。该标签会调用一个更长且预先编写好的代码模块,由该模块提供完成任务所需要的逐步说明。如此一来,开发人员就不必自行编写了。这类标签被称为“声明”,而由其传入操作的较长模块则被称为“实现代码”。

一份代表 78 位知名计算机科学家的诉书指出,“声明本身并不属于计算机程序,其仅仅用于描述计算机程序应当执行哪些功能性任务,而并不指明这些任务具体要如何执行。”(签署此份诉书的科学家包括与 Steve Jobs 共同创立苹果公司的 Steve Wozniak;以及互联网先驱 Vint Cerf,他目前在谷歌公司工作,并与 Ronald Rivest 共同发明了 RSA 公钥密码系统。)

值得注意的是,谷歌公司只复制了一小部分 Java 代码,而且只涉及声明部分。谷歌 Android 系统由 168 个软件包组成,其中有 37 个软件包复制了 Java 的声明。然而,谷歌方面对每项任务中的基础“实现代码”都进行了重写。因此根据谷歌公司的诉书,复制的代码仅占 37 个有争议接口中的 3% 左右,“而在 Android 当中 1500 万条相关代码千的占比甚至不足 0.1%。”

位于加利福尼亚州山景城的谷歌公司总部。

谷歌公司宣称,其拥有充分的理由不对声明做出变更。当第一款商用 Android 设备于 2008 年底问世时,苹果 iPhone 上市已经一年有余。谷歌方面希望其 Android 平台最终能够与苹果公司当时占据主导的 iOS 平台相媲美。通过保持 Java 声明的完整性,数百万已经投入大量时间学习 Java 编程语言(全球领先的编程语言之一)的独立开发商将能够轻松为 Android 平台构建应用程序。相比之下,重写声明则会削弱 Android 在实际开发领域的竞争能力。

美国反垄断研究所的 Stutz 表示,“大家可以想象一下,您正试图通过一套全新平台迈入某个市场。您不仅需要说服消费者转移到您的平台之上,同时还得说服开发人员为该新平台学习新的编程习惯。”

而根据计算机科学家们的说法,谷歌公司所做的“是一种长期存在且广泛普及的实践方式,其对于实现计算的基本进步至关重要”,并且“已经在过去数十年时间当中推动了整个软件行业的历史创新。”

谷歌公司目前已经成为 Aphabet 联盟的一部分,其宣称自己当初复制的 37 条 Java 声明实际上只是一种不具有版权属性的非表达性工具。这些声明的作用仅仅是激活实现代码。谷歌将声明比喻成电脑上的键盘——当我们按下 A 键时,其会机械地激活底层文字处理程序微软 Word,而后在屏幕上弹出对应的字母。虽然微软 Word 具有版权,但键盘本身却没有。

或者,谷歌方面还准备了一项后备论点。他们认为,即使这些声明具有版权属性,谷歌也仍然可以根据法官制定的“合理使用”原则证明自身行为的合理性。如果确能促进创造性表达或者其它积极社会目标,合理使用原则有时亦支持直接复制这类作法。(例如在该原则的支持下,书籍或电影评论家可以在自己的评论当中引用受版权保护的作品中的片段,且由此产生的评论作品本身亦构成有价值的新版权作品。)

谷歌公司的这两项论点在美国地方法院上得到了支持,但联邦巡回法院则更认同甲骨文方面的意见。首先,加利福尼亚州北部的美国地区法官 William Alsup 在 2012 年裁定 Java 声明不具有版权属性,但联邦巡回法院于 2014 年推翻了这一审理结果,并将案件送回陪审团以审议合理使用问题。

接下来在 2016 年,陪审团认定谷歌提出的合理使用辩护有效。然而联邦巡回法院于 2018 年再次推翻这项裁决,其支持甲骨文并命令将案件移交给另一支陪审团以计算赔偿金数额。

最高法院是否接受此项案件,最终可能取决于美国副检察长 Noel Francisco 的判断。今年 4 月 29 日,最高法院询问了他的意见,副检察长办公室预计将在今年 9 月中旬或者 12 月初给出批复。据一位熟悉内情的消息人士透露,甲骨文与谷歌双方的律师计划在今年 6 月的单独会议上分别与副检察长办公室讨论此案。

2017 年 5 月,副检察长 Noel Francisco 在参议院司法委员会的确认听证会上。他的办公室预计将在今年秋季向最高法院提出是否应该审理甲骨文 - 谷歌案的建议。

谷歌公司曾在 2015 年试图说服最高法院审理此案,但没有成功。当时联邦巡回法院刚刚做出第一次裁决,认定 Java 声明具有版权属性,但还没有涉及合理使用原则的问题。当时政府反对最高法院审理此案,部分理由在于其认同上诉法院提出的 Java 声明应受版权保护的结论。与此同时,批复中写道谷歌提出的“重要问题”主要涉及软件接口的功能性及其对于市场竞争的重要意义——即通过合理使用原则“更好地解决纠纷”。当时陪审团尚未就合理使用做出裁定,因此政府认为最高法院暂时不适合贸然介入案件审理。

现在,既然合理使用问题已经得到确定,那么最终法院接手审理的可能性应该会比较高。

曾为计算机与通信行业协会联合撰写谷歌法庭之友诉书的 Jonathan Band 表示,“最终,案情的走向将完全取决于竞争关系。我们希望在计算机行业当中尽可能多地参与竞争。”

他坦言,作为科技领域的巨头级厂商之一,谷歌乃至 Facebook 与亚马逊都凭借着强大的市场力量而被人们视为自由竞争的巨大威胁,而这样的厂商站出来反对版权控制实际上显得非常奇怪。“就目前的案情而言,纠纷双方的矛盾在于技术拥有者掌握着太多的权力。联邦巡回法院给出的裁定意见,无疑将使技术巨头的优势更加根深蒂固。”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java帮帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档