关于“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. 排序构造 GYM 101149 F - The Weakest Sith

    题目链接:http://codeforces.com/gym/101149/my 题目大意:给你n个人,他们有成绩a,b,c.一个人如果两门课比另外一个人高,那么这个人就比那个人厉害.问,是否存在一个 ...

  2. 2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式

    自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模 ...

  3. 软件测试(三)—— 参数化测试用例(Nextday.java)

    import static org.junit.Assert.*; import java.lang.reflect.Array; import java.util.Arrays; import ja ...

  4. [译] man 7 pthreads

    NAME      pthreads - POSIX threads   DESCRIPTION      POSIX.1 指定了一组叫做POSIX线程或Pthreads的编程接口(函数,头文件).单 ...

  5. IO流-读取写入缓冲区

    例如FileReader和FileWriter在读取的时候是读一次或者写一次就请求磁盘,这样使用的时间非常的长,效率比较低,因此引入BufferedReader和BufferedWriter作为读取和 ...

  6. 覆盖equals时总要覆盖hashCode

    本文涉及到的概念 1.为什么重载equals方法时,要重载hashCode函数;没有重载hashCode带来的问题 2.一个对象hashCode的生成规则       1.为什么重载equals方法时 ...

  7. 【BZOJ】1572: [Usaco2009 Open]工作安排Job

    [题意]给定n项工作的截止时间和价值,每项工作需要1单位时间完成,求最大价值.n<=10^5. [算法]贪心+堆 [题解] 如果是访问到x时将d[x]前的点从价值最大的能加就加是错误的贪心,因为 ...

  8. oozie与hive的简单案例

    1.把oozie中自带的hive案例拷贝到 测试目录 /opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/oozie-apps下 2. 编辑 job.properties # # ...

  9. 【洛谷 P2120】 [ZJOI2007]仓库建设(斜率优化)

    题目链接 斜率优化+1,好吧不水分了. 玩具装箱那题以后再做,当作复习吧. \(f[i]=f[j]-(sum[i]-sum[j])*dis[i]+p[i]\) \(f[j]=-dis[i]*sum[j ...

  10. Mysql储存过程6: in / out / inout

    in 为向函数传送进去的值 out 为函数向外返回的值 intout 传送进去的值, 并且还返回这个值 )) begin then select 'true'; else select 'false' ...