Oracle诉讼Google之联想
2010-08-28 16:18:30 阿炯

Oracle诉讼Google缘何正确

技术产业喜爱一场厂商的恶斗,来势汹汹的Google与Oracle之间的法律之争就有着它所需的一切壮观特质。

被热议的就是Dalvik,那个特殊的、基于Java的Google Android智能手机操作系统核心中的运行环境。在2009年收购Sun Microsystems之后接管了Java platform 的Oracle控告Dalvik有知觉地,愿意地,和有意地侵犯其Java知识产权。据上周美国San Francisco地方法院存档的申诉报告,Oracle欲叫停Android的任何进一步开发,销毁一切侵权的Android软件,并要求Google 赔偿实际构成的和法律意义上的损失。

博客人们、评论员们和开发者们纷纷责难这场诉讼。Farata Systems的Anatole Tartakovsky写道,Oracle管理者脑子进水了。PC World的 Tony Bradley把Oracle描述成一个专利恶魔,有其他人则毫不客气地把它和SCO Group相提并论。InfoWorld自己的编辑Eric Knorr,把Oracle比作Darth Vader 和同一栏目里的Batman's Nemesis the Joker。

如此不由自主的迅速反映是有误导意味的。Google并非Luke Skywalker,其对Java的处理本身就问题重重。认为Oracle手辣,是因为忽视了更大的事实就是在最近几年里,Sun对Java的管理太温顺、太无力了。没有强硬的领导,Java社区承受了缓慢和负重的发展进程,让这一平台的未来疑问重重。对 Google的诉讼是Oracle致力于改变这一切的明证这也可能正是Java社区所需要的。

只在名字上是Java

具有讽刺意味的是,鲜有公司如Google那样对Sun失败的领导直言不讳的。比如在四月的Red Hat Middleware 2020虚拟会议上,Google首席Java构架官Josh Bloch描述这一平台是无方向的,力促Oracle在决定它的未来上起到领导作用。过去几年里的技术和许可争议已经十分有害了。它们耗费了社区的精力,引起了一系列不适的压力,Bloch说。

可是谈话已经没有用了。实际上Google已经不再期待Oracle,它已经怀着自己的Java计划奋斗前冲了。结果就是Android,一个只在名字上是Java的平台。Dalvik虚拟机甚至不能执行Java字节码;相反Java class文件必须预编译成Google自己的.dex格式才能运行。而且Android开发平台既不是Java SE 也不是Java ME,而是一个来自stock Java、Apache 基金会和 Google自己所贡献的的一个类的大杂烩。

这不是偶然。在一个博客帖子上,Java创始人James Gosling回忆起Sun与Google的早期谈话,以及那家搜索巨头是如何更感兴趣于用Android分食Apple的市场而非真心支持Java的互通用性核心原则尽管遭到Sun的强力反对。

这也不是Google漠视Java标准的唯一例证。2009年,Simon Phipps,Sun当时的首席开源官,批评Google在其应用引擎云计算平台上未能支持Java核心的类的全集。在Java平台上生成核心类的子集有充分的理由被禁止,Phipps在一个博客帖上写道,并且玩弄规则是荒唐和不负责任的表现。

同样地,谷歌网页工具集(GWT)声称是一个帮助开发者用Java写客户端网页应用并以Javascript形式发布它们的工具,但Google自己承认 GWT只支持大多数核心Java语言语法和标准Java类的一个小子集。看来Google对Java的爱还只是因为它作为一个语言很流行,而不是作为一个平台所具有的凝聚力。

Oracle诉Google案
但是如果创造Java只是为了发明一个新语言,Sun当初就不会那么煞费苦心了。Java大部分语法是从C、C++,和其它一些地方借来的。真正让它出新并且重要的是JVM,其沙盒安全模型和其一次写成,处处运行之承诺。与Java类库相伴,JVM使Java成为一个从对下面操作系统的依赖之恼中解放了开发者的独特的平台。尽管在最近几年里,Java在好多路上有辜负其最崇高的目标,Sun为保住Java作为一个始终如一的、统一的平台所作出的努力还是未尝改变过的。

这些努力所迎的最大一次挑战是在20世界90年代后期,当微软试图通过提供一个唯Windows版的这一语言来分裂Java社区之时。Sun把事件带到了法庭上,论微软的作为侵犯了Java许可协议。当2001年尘落定之时,微软同意打消其Java企图,向Sun支付两千万美元损失赔偿。

现在如果微软想要使用Java,它们不得不使用和每个人都一样的Java,Sun副总裁Rich Green当时说。难道Google不应该以同样的标准被约束吗?Oracle认为应该,并且像当年的Sun一样,它选择了诉诸法律。

开源之后,Java的许可现在更加复杂了。这也可以解释为什么Oracle在对战Google时更看好专利路线。开源大师Bruce Perens指出,Java语言规范包括了许给Java实现者对Sun专利的免许可自由这一条款,但它在此案件中不适用。因为只有对Java及其必需包的完整安装启用才有权免许可;不可以是其子集或是超集,这点Android在Java使用上没能做到。

Oracle的投诉还提及版权,但是这里细节不足。Java和Android都是开源的,但尽管Java使用GPL,Google更喜欢那个更加商业友好的Apache许可。如果Google在其代码库中包含逐字的Java源代码,这一许可冲突就可能成为侵权立案的有力根据。


接下来会发生什么

Google说Oracle的行动是对Java社区的重重一击,但那只当Google是在发展Java时才是真的。然而就Android 和Dalvik VM,藐视建立起来了的Java标准,作出了自己的Java实现这一事实来讲,Oracle把Android比作纯Java之敌是正确的。并且作为 Java知识产权的所有者,Oracle有权也许也有责任来陈防卫这一平台免受此敌之害。

但是也请我们不要再哄自己了,别再开玩笑了。Darth Vader的比喻是夸张的,但没人曾把Oracle比作白衣救士,它在这里也绝对不是本着无私的动机来行动的。这场诉讼结束的那一天,剩下的都只是钱的问题。Android现在是一个建成了的良好平台,Google承受不了这场拖延时间的法律之争。Oracle等待着Google来解决,结果当然是每一部Android手机上的一个咖啡杯图标以及一笔可观的收入。更有甚者,这一诉讼会更加巩固这一信条走 Java之路必经Oracle,Java使用者跳出这条路等待着他们的将会是危险。

可是这如此可怕吗?Java社区需要一个领导。Sun之把Java推向社区的爱臂的尝试被证明是像把该公司推向失败的其它点子那样:学术上合理,外交上精明,而结果是行不通的。Google的Bloch叫Oracle强硬一点是正确的。或许他当初对他的期望多点谨慎就更好了。

提醒一下,Oracle并非一定会赢之场官司。这场诉讼之中所涉的专利引起了太多的头疼太多的怀疑。Google避开这个子弹也还是有时间的最简单的方法也许就是避开Java本身。因此听到新系列的Android是第一个基于Google Go的平台之说,请不要感到惊讶。

上文英文原文

美国能禁止编程语言或编译器授权吗?

如果美国禁止向中国出口CPU,那么国内电脑将只能选用国产芯片。如果美国撤销编程语言或编译器的授权,那么是否咱们还得自己发明一套编程语言或编译器呢?

唯一能约束一种编程语言的就是专利,但C语言等目前并不受任何专利约束。Bell实验室最早实现了C语言和Unix,但是其未能通过专利的力量阻止其他平台上C语言的实现和使用,未能阻止BSD和GNU的出现,未能阻止Unix大战,使得最后正统意义的Unix不复存在。后来从开源社区诞生的语言比如Python、Ruby、PHP、Go等,原本就不受专利约束,任何人都能自己实现它。

当然仍然受专利约束的编程语言是存在的。比如Java在Oracle的手上,仍受专利约束,所以才有了上面旷日持久的Oracle诉Google案。如果发生新冷战,到时候可能不能合法地使用Java了,像C#、Delphi、VBA等由商业公司创制的编程语言可能也将不能使用,只要他们随便在专利或者授权上找一个把柄就可以了。x86、ARM指令集也是受专利保护的,这就使得这些处理器的汇编语言也有可能不能合法使用。

至于编译器,可以去了解一下GPL协议。现代编译器一般分为前后端,即使后端代码生成部分不能再生成x86、ARM汇编代码,我们也能通过合法使用开源协议来为我们的自主架构,或者RISC-V等开放的架构开发自主的代码生成模块。而对于gcc、LLVM而言,其他东西本身是开源的,假设编译器原有代码本身不侵犯其他企业的专利,GPL协议并没有什么国家安全的特例之类条款,只要保证能够不关闭其源代码,我们就可以随便用。