关于“Google在Android平台使用Java侵犯知识产权”一案,2014年5月,联邦法院判定Oracle获胜,这个结果完全出人意料,因为这样一来无异于打开了软件开发领域中API使用方式的潘多拉之盒。Android使用的Java API是基于Google自己开发的Dalvik虚拟机,Google也因此就侵权问题提出了自己的异议,因为他们用的根本就不是Oralce的Java虚拟机(JVM)。

尽管Java是一个开源平台,任何开发者都应该能够自由访问和使用,但是Oracle认为,这个开源条款不适用于API包(具体指API包的组织形式——译者注)。“对于Java编程语言的开源性是毋庸置疑的,任何人都能免费使用”,联邦法庭裁定中写道,“但是下列三项API包则不在这个开源范围之内,因为Google很明显能够使用Java语言 自己重写这些API包,但是他们没有这么做。相反,Google毋庸置疑地拷贝了7000多行的声明代码,并几乎复制了整体的代码结构,序列,组织形式,这些东西都是Oralce Java API中已经存在的……被指控侵权的37个Java API包都在声明的开头标注了版权保护说明。”

联邦法院的这一裁决推翻了下级法院在两年前做出的关于:“API不受美国版权法律保护”的判决,Google当时做为被告胜诉。其实上诉法庭现在的判决并不是已经判定了被控侵权的API已受到法律保护;其受到保护与否要根据初始法院再组织的新陪审团来进行判断。上诉法庭的判决实际上是说,这些API有可能会被版权法保护,两年前下级法院的“不被保护”的裁决是错误的。

如今法庭裁决“API可能受保护”这一结果,将可能导致技术工业领域一场全新的知识产权的战争。这些战争多半都是关于Android的——比如那些有年头的旧案子:“三星状告苹果侵犯专利权”——但是这一判决导致的指向性可能会影响到所有的开发者。一直以来,Oracle的法律官司都是业界的恐怖噩梦,很可能将Android和开源软件都拖入无底的泥淖。现在,这个噩梦部分地,成真了。

“我不是律师,但是仅从一名开发者的角度来看,对API进行版权限制只会给软件开发的协作一体化带来摩擦和混乱,因为程序员无法使用API来完成任务了。”,Jeffery Hammonds(Forrester Research副总裁)表示,“开发者必须要担心API中潜在的侵权问题,而且供应商也必须要承担同样的风险。我不认为像这样制造恐惧和不确定性会对软件开发者有什么好处,尤其是对第三方服务来说,这更加糟糕。”

“避免Java语言碎裂化,这是Oracle一直以来坚持追求的目标,这是有价值的,但是我们不认为给API加上版权会有利于实现这个目标。”,Ed Anuff(Apigee产品策略副总裁,Apigee是一家提供云端API接入的服务商)说,“相反这样做是起到了反作用,反而使得API不得不变得更加复杂,以此来规避那些政治或法律层面的问题。这样一来,会造成一个双输的局面,对参与者毫无益处可言。”

自然,Oracle的代理律师Josh Rosenkarz对这个裁决非常满意,他表示:“今天,联邦法院巡回法庭保证了创新者的利益能够得到保护。” 关于下级法院就此诉讼再次开庭前,Oracle是否会主动达成庭外和解的问题,Oracle目前还没有对此发表任何回复;Google对此也没有发表任何意见。

原文链接: Javaworld
翻译: ImportNew.com - 黄小非
译文链接: http://www.importnew.com/11649.html

Oracle意外赢官司,程序员或过苦日子的更多相关文章

  1. 谁说程序员都是苦逼的——看看兄弟连上海S2班的点点滴滴

    时间过的很快,上海校区第三期马上临近开班,第一期的学员也结束了自己第一个项目.         今天,2013.05.08日,我亲自参加了S01的第一个项目答辩,也为你们记录下了这样那样的一些时刻.其 ...

  2. 苦逼三流小公司程序员这半年找工作经历(3)——选择offer

    本文按照企业规模.性质.规模,分成三类,点评一下遇到的这些公司.也算是为半年找工作经历的一个总结. 1,三流小公司 公司规模类似于笔者跳槽前所在企业,性质有外商独资.合资,当然大多数都是民营企业,规模 ...

  3. 程序员装X指南

      一.准备工作“工欲善其事必先利其器.” 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码 .总之要显得信息量很大,效率很高. 2.椅子不一 ...

  4. 程序员装B指南(转载)

    转自:http://www.oschina.net/question/615783_115390 一.准备工作 "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的 ...

  5. .NET程序员细数Oracle与众不同的那些奇葩点

    扯淡 距上次接触 Oracle 数据库已经是 N 年前的事了,Oracle 的工作方式以及某些点很特别,那会就感觉,这货就是一个奇葩!最近重拾记忆,一直在折腾 Oracle,因为 Oracle 与众不 ...

  6. .Net程序员学用Oracle系列(5):三大数据类型

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.Oracle 数据类型概述 2.字符类型 2.1.字符集 & NLS 2.2.常见的两种字符串 2.3.NCHAR ...

  7. .Net程序员学用Oracle系列(1):导航目录

    本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...

  8. .Net程序员学用Oracle系列(2):准备测试环境

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...

  9. .Net程序员学用Oracle系列(4):四个基本概念

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.概念说明 1.1.表空间 1.2.SCHEMA 1.3.用户 1.4.权限 2.表空间管理 2.1.创建表空间 2.2.监控 ...

随机推荐

  1. 2017北京国庆刷题Day7 morning

    期望得分:100+0+100=200 实际得分:100+20+0=120 离散化搞搞 #include<cstdio> #include<iostream> #include& ...

  2. synchronized的实现原理

    常见三种使用方法: 1)普通同步方法,锁是当前实例: 2)静态同步方法,锁是当前类的Class实例,Class数据存在永久代中,是该类的一个全局锁: 3)对于同步代码块,锁是synchronized括 ...

  3. 前端QRCode.js生成二维码(解决长字符串模块和报错问题)

    QRCode 用法 1.使用npm安装到你的项目中 npm install qrcode2 --save 使用commonjs或者es6模块方式导入 var QRCode = require('qrc ...

  4. TypeScript在react项目中的实践

    前段时间有写过一个TypeScript在node项目中的实践. 在里边有解释了为什么要使用TS,以及在Node中的一个项目结构是怎样的. 但是那仅仅是一个纯接口项目,碰巧赶上近期的另一个项目重构也由我 ...

  5. three.js为何如此奇妙

    WebGL是在浏览器中实现三维效果的一套规范,而最初使用WebGL原生的API来写3D程序是一件非常痛苦的事情,在辛苦的付出下WebGL开源框架出现了,其中three.js就是非常优秀的一个,它掩盖了 ...

  6. 搭建自己的PHP框架心得——转载

    原文:http://www.cnblogs.com/zhenbianshu/p/5331165.html 前言 说到写PHP的MVC框架,大家想到的第一个词--“造轮子”,是的,一个还没有深厚功力的程 ...

  7. isolation forest进行异常点检测

    一.简介 孤立森林(Isolation Forest)是另外一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择.在建树过程中, ...

  8. mysq配置

    mysql运维 1.mysql配置文件:/etc/my.cnf mysql日记文件 :安装时候配置的,可以通过ps aux|grep mysqld 查询 ps aux|grep mysqld mysq ...

  9. python基础===将Flask用于实现Mock-server

    from flask import Flask from flask import request, Response, jsonify import random import string app ...

  10. 142.Linked List Cycle II---双指针

    题目链接 题目大意:141题目的扩展,给出单链表,判断是否有环,如果有环,找出环的开始的结点,如果没有环,返回null. 法一(借鉴):在已经找出单链表环的基础上再找开始结点,要时刻记住这个环不一定是 ...