那些甲骨文、谷歌和Java的恩怨情仇

[摘要]美国旧金山联邦陪审团近日作出裁决,认定谷歌没有侵犯保护甲骨文Java技术的专利。随着这个引人瞩目的案子接近尾声,谷歌获得了胜利。

(中国软件网讯)美国旧金山联邦陪审团近日作出裁决,认定谷歌没有侵犯保护甲骨文Java技术的专利。随着这个引人瞩目的案子接近尾声,谷歌获得了胜利。

甲骨文在2010年8月起诉谷歌,指控谷歌Android手机操作系统侵犯了保护Java版权的专利。当时,甲骨文在几个月前收购Java开发商Sun微系统公司的时候获得了Java。甲骨文要求获得数十亿美元的赔偿。这个赔偿数额和甲骨文在硅谷的影响力使这个在旧金山审理的案子吸引了许多关注。

甲骨文、谷歌之间就Java技术到底存在哪些恩怨情仇?请看本文的详细分析。

15年前,Java技术的出现令微软恐慌,似乎要为静态网页注入活力。初次亮相时,Java品牌的实力惊人。虽然在技术上Java有着显著的影响力,但围绕版权、专利、许可交易的纠纷是Java技术带来的不光彩局面。而甲骨文、谷歌围绕安卓系统和Java之间的恩怨情仇,就是近来高科技公司之间关于知识产权竞争的一个典型案例。

Java是什么?

Java于上世纪90年代由Sun公司发明,并于2010年最终由甲骨文收购。实际上,Java这个词包含好几层含义。首先,它是一种编程语言。其通过详细定义一些方法,使电脑能够执行一些有效的操作。其次,Java需要运行在一种称为Java虚拟机的环境之上。该Java虚拟机对Java程序来说就像一个真实的电脑,不过它实际上只是操作系统内部的一个中间层。它将指令传递给直接运行于计算机硬件之上的操作系统底层。通过安装针对不同操作系统而设计的Java虚拟机,同一种Java程序就可以运行在不同的操作系统之上,比如说Mac或者Windows。因此Java最初的设计初衷就是“一次编写,处处运行”。最后,Java还包括被称为类库的预先写好的代码。这些代码可以实现各种各样的功能——从密码设定到蓝牙传输。如果一名Java程序员想要使用这些代码,就需要通过“应用程序编程接口(API)”来调用它们。目前已经有很多公司为Java编写这些API了。

总的来说,这三个部分就组成了Java运行时的环境,这些也就是电脑能够运行Java程序的基础。若想要某些小型设备也能够打上Java的标签,这些设备需要通过一定的测试来确保能够正确运行Java程序。

Java版本分化

然而,随着时间发展,Java变得复杂起来。针对不同的用户,Java出现了不同版本。最初的Java标准版本目标用户群就是一些个人电脑使用者。后来,又出现了企业版和精简版。企业版为用户提供了一些诸如管理数据库的额外功能。而精简版是为了移动设备而开发的,其中包含了发送短信等的API。

又过了段时间,精简版的Java又分出了不同的版本:适用于有限连接设备配置的版本、适用于个人信息说明的版本、适用于移动信息设备描述的两种版本……

这样的划分结果导致程序员们并不能准确预测某种设备能够使用哪些API。一部手机能够通过Java实现对二维图形加速的支持吗?那么三维图形呢?当在编写一些程序代码时,这些关键技术点是很重要的。缺乏一致性导致Java设计初衷变为了“一次编写,处处测试”。

为了改变这种混乱不堪的局面,甲骨文推出了JavaFX。然而,在它发布之际,移动应用开发者们的目光却被另一种开发环境所吸引。那就是苹果公司的iOS。



Android的出现

为克服Java在手机上的不足,Sun公司携手摩托罗拉等Java联盟的成员公司投入了很多精力开发适用于手机市场的技术。Java的跨平台优势对于意图打造广阔的新型移动生态系统的公司极具吸引力。因此,对于正在研究可扩展至多种设备的Android编程基础的谷歌及其盟友来说,Java是一个很自然的起点。实际上,2005年谷歌的计划正是如此。

除了技术本身,规模庞大的Java程序员队伍也意味着面向Android的开发无需从零开始。而采用Java技术还能抗衡微软,谷歌一直将微软视为移动操作系统领域的宿敌。

开源软件的限制

开源软件提供了种种自由便利,但这并不意味着人们就可以为所欲为。Sun公司遵照开源版本的Java标准版本项目,GNU的OpenJDK通用公共许可证(GPL)和它称之为PhoneME的Java微型版本。但这两个项目之间存在着微妙但重大的差别。

对于penJDK,Sun公司在GPL中补充了类库代码的“路径异常”。该异常处理绕开了一项重要的GPL要求,即遵循GPL的工程衍生而来的项目也必须遵循GPL。有了路径异常,程序员就无需担心使用了遵循GPL的库文件就必须按照GPL的要求公布自己的软件代码。无论该场景是否具有代表性,这都是Android必须面对的现实,谷歌对此甚为不满。谷歌希望获得他人可依修改并加入自己的专有软件之中的开源项目。其中包括用户界面、视频编码包及自定义键盘等。



Android的应对

对此,Android的应对策略是大量借鉴Sun公司的Java技术,包括Java编程语言本身、Java程序调用的许多API的句法以及虚拟机的方法。但微软也有其独特之处。首先,微软自己开发了名为Dalvik的虚拟机。其次,微软借用了另一项开源Java项目,一个名为Harmony的类库。由IBM公司支持的Harmony遵循Apache许可证,该许可证为谷歌所青睐,程序员无需顾虑重重,可以自由地将开源项目与专有软件结合起来。

Sun公司抗议谷歌公司的Java似是而非,但谷歌不为所动。而且谷歌明确表示,自己无意到处都打上官方Java标签。如果谷歌就此止步是无法完成Harmony未竟的工作的:说服Sun授权使用Java技术兼容性工具包(TCK),保证Java工程正确运行。

谷歌实质上避开了Sun公司,从而极为成功地将自己的山寨Java打造成Sun公司梦寐以求的智能手机操作平台。

对簿公堂

甲骨文提出谷歌应当支付Java许可费用,把Java切割成互不相容的版本对Java造成了损害。甲骨文称,这从根本上动摇了Java“一次编写,处处运行”的承诺,降低了Java的价值。甲骨文声称谷歌侵犯了其专利权和版权。谷歌公布了许多电子邮件作为证据证明自己显然考虑了一系列可选的许可证,而且确实在2009年仔细考虑过一项颇有戏剧性的方案:“谷歌从Sun公司手中购买Java所有权(专利、版权等)”,价格在1亿美元到5亿美元之间。

但双方并未就此达成一致。因此,甲骨文和谷歌对簿公堂。甲骨文提出了多项证据。例如,谷歌抄袭了RangeCheck这个Java函数的源代码。在甲骨文的声明中,类库的范围更广泛,它们认为用于访问这些库的API本身也是需要版权的。甲骨文称,API不仅仅是预先写好的代码的入口,实际上本身也是一种著作。各种API经过仔细设计才能相互配合使用,单个API的设计与其相应的类库实际是同一枚硬币的正反两面。谷歌则指出,以RangeCheck为例,在较大文件的924行和整个Android 1500万行代码中,只有9行相同。

现在,随着法官的正式宣判,甲骨文与谷歌之间关于安卓侵犯Java知识产权的纷争告一段落,安卓系统这个全球最大的开源软件操作平台暂时获得了安全。但是,由于安卓系统的强大和广泛流行,围绕其知识产权的诉讼和纷争依然会持续不断。 




免责声明:

本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!

[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。