导航菜单

Java、SQL 十年混战史:Oracle 告 Google、“窃”小发猫 往事

原标题:十年来在Java和SQL之间的纠结:甲骨文告诉谷歌和“窃取”小发猫的过去

在漫长的计算机历史中,甲骨文是一家极具争议的公司。在《浪潮之巅》,吴军将其定义为“纯软件公司的先锋”,即开创一种只开发软件,然后依靠软件许可费生存的商业模式。十多年来,甲骨文和谷歌之间长期存在的Java API版权纠纷直接影响了安卓的发展趋势。另一方面,甲骨文本身也面临着许多侵权纠纷,比如最近关于复制亚马逊的应用编程接口和关系数据库的争议,拉里埃里森是在甲骨文业务开始时从小发猫科学家那里得知的。

Author | TIMOTHY B . LEE

Translator | Su Benru,Editor | Tang小银

Headline | CSDN下载自东方集成电路

以下翻译:

十多年前,谷歌重新实现了Java编程语言,作为其新的安卓移动操作系统的一部分。Java的所有者甲骨文随后在2010年起诉谷歌侵犯版权。本月晚些时候,最高法院将举行一次听证会,讨论这一重大的原料药侵权案件。这起侵权案件的判决将对整个软件行业产生深远影响,并可能给谷歌带来数十亿美元的巨额损失。

谷歌声称自己没有做错任何事。因为联邦版权法明确将“系统”和“操作方法”排除在版权保护之外。谷歌认为,Java函数的名称、参数类型等。它完全符合这个例外。谷歌还认为,合理使用版权的原则允许这种形式的复制。

整个软件行业都在密切关注此案。微软和小发猫等公司警告称,甲骨文的立场可能会给软件行业带来混乱。他们认为,将这种复制判定为“非法”不仅会给许多软件公司带来法律麻烦,还会损害客户的利益。

软件公司一直在复制竞争对手产品的软件接口(行业术语称之为“应用编程接口”或应用编程接口)。这种复制使竞争软件产品能够互操作,这样客户就可以重用设计用于另一个平台上的软件。对于客户来说,这意味着转换成本的降低。这对软件初创企业尤其重要,因为这意味着更低的进入门槛,如果一个新产品与客户已经知道并信任的软件产品兼容,那?聪壅飧鲂虏方岣菀住?

如果有人“应该理解”这种复制的重要性,那一定是甲骨文。毕竟,甲骨文在20世纪70年代开始销售基于当时新的结构化查询语言(SQL)的数据库产品。SQL语言是由小发猫发明的,但甲骨文似乎还没有获得许可。

如果甲骨文赢了这场官司,一个具有讽刺意味的结果将是软件行业将不再像甲骨文那样对初创企业友好。现有的软件公司将有更大的能力将客户锁定在他们自己的专有标准中。初创企业将不被允许像甲骨文40年前所做的那样:让他们的产品与现有竞争对手的产品兼容,然后将互操作性作为卖点。

正如我将在下面解释的,甲骨文对SQL的复制看起来非常类似于谷歌对Java的复制。但甲骨文发言人不同意。她在周二的一封电子邮件中写道:“这是一个错误的假设,就像把苹果和花椰菜进行比较一样,完全背离了事实。”

甲骨文是从复制小发猫的软件界面开始的。

自20世纪70年代初以来,小发猫研究人员开发了一种新的数据库组织方法,称为关系模型。这个模型使得在数据库上执行复杂的查询更加容易。小发猫创造了一种新的语言,称为结构化查询语言(SQL),来帮助用户制定这些查询。一个典型的SQL语句类似于以下语句:

从产品id=和状态=' ca '的订单中选择客户名称、发货日期

这里有两点需要注意。首先,SQL语言有一个类似英语的简单语法。没有编程或数据库管理背景的人通常可以通过阅读下面的语句来理解它的功能。其次,SQL是一种声明性语言:用户指定他们想要查找的信息,数据库系统决定如何查找信息。

这两个特性的结合使得SQL对于那些没有接受过正式的计算机编程培训的人来说特别容易。非程序员也可以编写SQL查询来完成各种任务,只需要一点点练习。

1974年,一个来自小发猫的研究小组开始在一个叫做SYSTEM R的软件包中实现这些想法。大约在同一时间,小发猫的研究人员(他们认为自己既是计算机科学家又是软件开发人员)发表了关于他们研究成果的论文。这些已发表的论文涵盖了非常详细的内容,包括完整的SQL语言规范。

几年后,小发猫有了一个系统R的工作版本,但它从未打算把它变成一个商业产品。直到20世纪80年代初,小发猫才最终发布了一个基于SQL的商业数据库。

大约在1977年,拉里埃里森和他的联合创始人发现了一个商机。他们刚刚成立了一家名为软件开发实验室的软件咨询公司,但他们想转而销售软件产品。埃里森意识到,小发猫的白皮书有足够的细节来克隆小发猫的数据库技术。他还意识到,如果他们可以说他们的新甲骨文数据库完全兼容小发猫的SQL标准,他们就可以提高他们在客户面前的可信度。

根据设计者唐纳德钱伯林的说法,埃里森决心实现与小发猫技术的兼容,所以他在1978年打电话给钱伯林,向他询问有关小发猫实现SQL的更多细节。

chamberlin在1995年的一次采访中说,埃里森“听说了系统R的原型,他想确保他的产品与它完全兼容,甚至错误代码也是一样的。”。钱伯林说他很乐意分享更多的信息,但是他的老板拒绝了这个想法,并宣布错误代码是机密的。

然而,小发猫的系统R白皮书包含了许多关于SQL如何工作的细节。因此,埃里森和他的团队可以借此机会向前迈进,并在1979年发布第一个版本的甲骨文数据库。该公司曾多次用小发猫和SQL大力宣传该产品的起源。"甲骨文数据库的用户界面是由小发猫高级研究开发的一种关系数据库语言SQL . "这是一位早期的神谕宣传员所说的。

比小发猫早两年上市,给甲骨文相当大的市场份额。因此,甲骨文将在未来几年保持其在SQL数据库领域的领先地位。

System R的内部人士继续争论小发猫发布的SQL细节是否是一个错误。显然,这使得埃里森在市场上击败了小发猫,夺走了小发猫的市场份额。然而,一些业内人士认为,系统R白皮书的发布对于这项技术引起足够的轰动以及小发猫首先认真对待它至关重要。

1995年,小发猫高级官员迈克布拉斯根说:“如果我们不发表这些论文,SQL就会失败,因为小发猫会忽略它。”

为了这个故事,我读了两本关于甲骨文历史的书和几篇对小发猫内部人士的深度采访。甲骨文似乎甚至没有试图从小发猫获得SQL许可证,所有相关人员似乎都认为甲骨文不需要这个许可证。

为了这个故事,我读了两本关于甲骨文历史的书和几篇对小发猫内部人士的深度采访。甲骨文似乎甚至没有试图从小发猫获得SQL许可证,所有相关人员似乎都认为甲骨文不需要这个许可证。

相比之下,谷歌在最终决定不获取Java许可之前,确实与相关方进行了接触和讨论,试图达成许可协议。

当谷歌在2000年代中期开始开发Java时,这项技术属于Sun,而甲骨文直到2010年才收购Sun。2005年,谷歌就一项许可协议与孙进行了接洽。谷歌坚称,它从未试图获得Java界面的授权,因为(在谷歌看来)法律并不要求这样做。不过,谷歌表示,两家公司最初同意谷歌向孙支付2800万美元,用于许可与Java相关的专利、Java商标和其他资产。

然而,谷歌声称“谈判破裂是因为与金钱无关的问题。”谷歌表示,孙寻求对安卓平台发展的更多控制,这超出了谷歌的接受范围。因此,谷歌决定在没有孙授权的情况下构建自己的Java版本。

这意味着谷歌将开始开发Java语言的功能规范,这是一套确保这是Java语言的基本规则。它包括关键字、语法规则以及标准函数的名称和参数类型。然而,除了一些有争议的例外,谷歌没有像甲骨文对SQL那样复制这些功能的实现代码。谷歌工程师从头开始编写自己的代码,这些代码生成的结果与孙的Java代码生成的结果相同。

虽然没有达成授权协议,但当谷歌最终宣布安卓系统将基于Java时,Sun的首席执行官非常热情。

Schwartz写道:“我只想和孙的其他同事一起祝贺谷歌宣布推出基于Java/Linux手机平台的新Android系统。”。

但被甲骨文收购后,公司的态度发生了变化。随着安卓系统的采用率飙升,孙的新东家看到了从谷歌获得数十亿美元的机会。因此,在孙被收购后不久,甲骨文对谷歌提起诉讼。

Java和SQL案例有什么区别?

谷歌和甲骨文的案例有一个很大的不同:谷歌复制了孙已经在市场上发布的产品。相比之下,甲骨文复制了一款小发猫尚未发布的产品。它依赖于小发猫发布的白皮书来理解小发猫最终的SQL数据库产品将如何工作。

但是康奈尔大学的版权学者詹姆斯格里姆曼认为,从版权的角度来看,这可能并不重要。如果复制已交付软件产品的应用编程接口侵犯了版权,那么从关于该软件产品的文档中复制应用编程接口也侵犯了版权。

Grimelman在1月份的一次采访中告诉我们:“小发猫的论文也是受版权法保护的作品,而且大量来自小发猫论文发表的规范的拷贝属于相同的复制行为。如果SQL规范可以获得版权,无论是从官方软件还是从白皮书中复制,版权都将适用。”“Java语言与Java API”的另一个重要问题是,复制编程语言是否不同于复制相关的API。要理解这个问题,需要深入了解Java语言是如何组织的。

Java分为两部分。其中一部分是核心语言规范,它定义了像“n=a b;”这样的定义或返回(真);这些句子的句法和意义。另一部分是Java API。这是一个类库和函数库,它与每个现代的Java系统一起发布。

Java应用编程接口是巨大的。它以包的层次结构组织,其中一些包有几十个功能。加州联邦法官威廉阿尔苏普在加州初审法院做出了有利于谷歌的裁决。根据他的统计,谷歌已经重新实现了37个包,616个对象类和6088个Java API函数。

这意味着谷歌已经完全复制了6088个Java函数的名称、参数类型和预期输出。但是它没有复制真正在这些函数中工作的代码。相反,谷歌工程师从零开始重写这些函数,以产生与原始Java实现完全不同的相同结果。

例如,谷歌复制了一个名为java.lang.Math的Java应用编程接口包,它包括像max这样的函数,其定义是‘int max(int a,int b)’;顾名思义,该函数接受两个整数值,并返回较大的整数。或者像sqrt这样的函数,其定义是“双sqrt(双a)”。它接受一个数字(可能是也可能不是整数),并返回它的平方根。

当然,max函数是一个非常简单的函数。两个有经验的程序员可能会想到相同的实现。然而,对于更复杂的功能,谷歌和甲骨文的实现看起来应该非常不同。

甲骨文起诉谷歌复制这些应用编程接口函数的名称和参数。但它没有起诉谷歌复制核心Java代码。显然,甲骨文相信谷歌能够开发出一种能够解释基本Java语句的编程语言。但是甲骨文似乎认为谷歌在复制Java的大型支持函数库时越界了。

如果这一区别成立,它可能会将甲骨文复制SQL的行为与谷歌复制Java的行为区分开来。1979年,小发猫的SQL没有一个大型的支持函数库供Oracle复制。因此,如果“语言复制”是可能的,但“应用编程接口复制”是不可能的,那么甲骨文在自己的应用编程接口版权理论下没有做错任何事情。

但是格林曼认为在编程语言和应用编程接口之间划出法律界限是不合理的。

他告诉我们:“SQL本质上是一个普通的数据库API,SQL语句中的一些动词是命令。同时还有一些参数、一些格式和一些语法糖来组合它们。”

尚不清楚版权法是否会区分核心语言和相关的应用编程接口。例如,Java不使用“n=a b;”相反,要执行加法操作,用户需要调用这样一个API函数:“n=和(a,b);”。如果版权法保护带前缀和括号的字符串“sum”,但不保护中缀符号“”,从合理的角度来看,这是很难接受的。如果一个可以受到版权保护,另一个也应该受到保护。

从本质上说,应用编程接口是一种用于计算机程序间通信的语言。诸如SQL或Java之类的语言都是API的类型。成熟的计算机语言通常比其他应用编程接口有更复杂的语法规则。然而,潜在的版权元素,如关键字、参数类型和语法规则,是相似的。如果传统应用编程接口中的函数名可以受版权保护,那么计算机语言中的关键字似乎也受版权保护。这些包括诸如“选择”、“从”和“在哪里”之类的SQL关键字。

最高法院已经决定尽快重审此案。

这里还有更大的担忧,不清楚甲骨文声称的“应用编程接口版权”有多大。在甲骨文2010年提起诉讼之前,软件行业的许多人都认为软件界面不受版权保护。所以他们不太担心不同类型的软件界面之间的细微差别。

甲骨文的胜利将打开潘多拉的盒子。也许法院最终会裁定API版权延伸到编程语言的核心特征。或者他们会找到一个法律原则来区分普通的API和编程语言。然而,将会有许多不确定性。需要多年的诉讼和数百万美元的诉讼费才能弄清楚哪些软件界面有版权。

最高法院计划在两周内于3月24日审理此案。谷歌在当地初审法院赢得了许多判决,但每一项判决都被联邦巡回上诉法院驳回。谷歌将试图说服最高法院的法官,一审法院的判决是正确的,上诉法院的判决是错误的。

从技术上讲,谷歌有两种方式赢得这场诉讼。对谷歌和许多软件专业人士来说,首选的方法是最高法院裁定软件界面不受版权保护。在甲骨文于2010年提起诉讼之前,许多人都相信这条法律。它将为未来基于API复制的版权诉讼提供最强有力的辩护。

或者退而求其次,最高法院可以得出结论,软件界面有时是有版权的,但是谷歌的复制属于“合理使用”的范围该裁决将免除谷歌向甲骨文支付10位数天文数字的赔偿,但它仍可能将软件行业拖入法律泥潭。

这是因为“合理使用”是一个众所周知的复杂和主观的法律标准。任何想让软件与竞争对手的产品互操作的公司都必须担心被竞争对手起诉,因为他们会认为这种使用不如谷歌的Java使用合理。大多数软件公司没有谷歌的法律资源或耐力,所以即使他们有很好的机会赢得诉讼,旷日持久的诉讼可能成为构建可互操作软件的主要障碍。原文:

作者:TIMOTHY B. LEE

翻译:苏本儒

阿里云核心技术竞争力综合分析

CSDN独家在线峰会就在这里!

3月18-19日,12位大玩家,包括CSDN创始人兼极客集团创投创始合伙人董事长、阿里云研究员江涛、阿里云智联网络首席科学家丁险峰、阿里云智能企业集团研究员、网络产品线负责人朱顺民、阿里达摩研究院高级算法专家谢宣松,齐聚CSDN工作室,发布阿里云在虚拟化、存储、网络、安全、云计算、大数据、物联网等维度的核心技术和竞争力。回到搜狐看更多

负责任的编辑:

六月丁香,六月丁香成人站,六月婷婷,六月丁香在线