Oracle vs Google:在陪审团考虑专利问题之际法官Alsup披露自己是个程序员

本文主要是介绍Oracle vs Google:在陪审团考虑专利问题之际法官Alsup披露自己是个程序员,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2012/05/oraclevgoogle-patents

目前,Oracle与Google诉讼案的陪审团正在考虑对两个专利的裁决。由于陪审团在此前的版权阶段所作出的裁决(他们无法在Google对Java的使用是否合理这个问题上达成一致),现在Oracle的救命稻草就是专利阶段的裁决结果了。

第一个专利(后文称作104)于1992年生效。104本质上指的是这样一个方法,计算机系统会通过一个符号标识符(能够动态解析为正确的地址)对内存中的数据调用该方法,而无需使用具体的内存地址本身。104的发明者James Gosling虽然对Oracle没什么兴趣,但他在自己的博客中表示了在这起诉讼中对Oracle的支持。

Sun没有提起专利诉讼并不表示我们不会抱怨。虽然我与Oracle道不同,但在这起诉讼中,Oracle是正确的。Google完全输给了Sun。

第二个专利(520)为程序创建静态数组值提供了一种可以使用更少系统资源的方式,这是通过模拟Java字节码的执行来实现的,这减少了虚拟机所要做的工作。

对于这两个专利来说,人们通常认为104更具价值。在结束语中,Oracle的首席律师Michael Jacobs告诉陪审团Google自己的工程师(主要指的是Andy McFadden)已经在其证词中承认Android的Dalvik虚拟机是通过Oracle专利所描述的方式来获取数据的。Google的首席律师Robert Van Nest告诉陪审团符号引用是“Android从来都没有使用过的东西,从来都没有”。他说,104描述的是一种动态系统,而Dalvik优化程序dexopt则是“一种静态操作”。

对于520专利来说,Van Nest将其描述为一种非常小的特性。该专利描述了一种初始化数组的方式,Oracle声称它被用在了Android “dx工具”中。正如该专利所示,Google说该工具所做的事情仅仅是“模式匹配”而非“模拟执行”。

一旦陪审团做出了裁决,假如他们认为Google侵犯了Oracle的专利,那么审判就会转向损害赔偿了。Oracle对版权侵犯提出了10亿美金(折合6亿3千万英镑)的赔偿,但对于违反专利声明的任何处理都要远远小于这个数字。根据ITworld的报道,在该诉讼开始前,Google曾计划为这两个专利支付总计280万美金(折合175万英镑)的损害赔偿,涵盖了2011年他们对这两个专利的使用。根据ITworld所述,Oracle提出了415万美金的赔偿。对于未来的使用,Google需要为其中一个专利支付其Android营收额的0.5%,直到今年12月该专利过期为止。Google还提出为第二个专利支付其Android营收额的0.015%,直到2018年4月该专利过期为止。

Oracle与Google都同意将版权阶段的损害赔偿决定延期,直到法官Alsup处理好编程APIs的版权规则为止。如果Alsup认为APIs是受版权保护的,那么新的陪审团将会聆听该案以决定损害赔偿。如果Alsup认为APIs是不受版权保护的,那么就损害赔偿来说,双方将会放弃自己的权利。Oracle已经提供了版权案的文件,从9行代码的rangeCheck函数到用于测试的8个文件。根据庭审记录所述:

法庭上的证据表明Google反编译了8个Java文件并将其复制到自己的项目中。对于正常的陪审团来说,他们觉得仅仅复制8个计算机文件根本就不值得小题大做。庭审记录包含了这些Java代码文件的源代码(TX 623.2–623.8)、Java代码文件的反编译版本(TX 896.1–896.8)以及对应的Android代码文件(TX 1031–40)。John Mitchell教授证实了反编译过程、他是如何确定这8个文件是被反编译的以及通过一行一行地比较,如何发现“实际的代码是完全匹配的”(Tr. at 1259–1260)。

与之相反,Google认为陪审团发现Google对这些复制文件的使用根本就不值得一提,因为这些复制的文件只是“测试文件”而已,并不会发布到Android手机上。这么做是没有说服力的。

然而,Oracle的律师David Boies却死盯着rangeCheck函数侵犯不放,并说到:复制这9行代码加速了Android的面世时间。多方面表示(1、2)法官Alsup对此进行了驳斥:

我曾经,并且现在依然在使用其他多种语言来编程。我之前曾写过类似于rangeCheck这样的函数代码几百次了。我能做到、你也能做到。人们本来可以自己实现它,复制的原因就是为了快一点而已,这仅仅是个意外。你怎么能说这加快了Android的面世时间呢。你是美国最好的律师之一,但怎么能提供这种论据呢?

Google认为最终的审判应该会没事,因为陪审团无法就其公平使用Java的问题上达成一致、也无法做出最后的裁决、审议将在法官Alsup确定好API的版权问题后开始。

无论结果是什么,都很可能会有一方继续上诉。

查看英文原文:Oracle vs. Google: Judge Alsup Reveals he is a Developer as Jury Considers Patent Claims

这篇关于Oracle vs Google:在陪审团考虑专利问题之际法官Alsup披露自己是个程序员的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/155327

相关文章

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

关于@MapperScan和@ComponentScan的使用问题

《关于@MapperScan和@ComponentScan的使用问题》文章介绍了在使用`@MapperScan`和`@ComponentScan`时可能会遇到的包扫描冲突问题,并提供了解决方法,同时,... 目录@MapperScan和@ComponentScan的使用问题报错如下原因解决办法课外拓展总结@

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas