写点什么

Android 侵犯 Java 版权了么?

  • 2011-01-26
  • 本文字数:1292 字

    阅读完需:约 4 分钟

上周五, Florian Mueller 在 Android 源代码树 http://android.git.kernel.org/ 上发现两套文件可能会有损 Google 的名声,并且会令 Google 在与 Oracle 之间的法律诉讼之战中处于不利地位。

目前已经有很多人对 Florian Mueller 发现 做出回应。关键点主要在于对源代码树的两个独立的调查结果。

  • 包含了多媒体 API MMAPI.zip,它可以免费下载但却不能再次分发。
  • 其他一些可能经过了反向工程的文件,估计是使用了 Java 反编译器(非常类似于之前的 PolicyNodeImpl 问题)。

值得强调的是这些文件并没有随 Android 内核一同发布;他们是测试源代码树的一部分,因此不会出现在最终的产品当中。这样就会限制 Oracle 的赔偿要求。

MMAPI 包含在面向 Java ME 的 SONiVOX 当中,其文档指出 MMAPI 是不可以再次分发的。但却错误地放到了源代码树中;毫无疑问,律师们会提出这样的质疑:包含在公开可读的源代码仓库中是否可以认为是重新发布呢?假如源代码树并不是公开可读的,那么就不会破坏许可条款。值得注意的是,从来没有人在 Apache License 下重新声明这些代码的许可。

然后就是反编译或重新生成的文件了。虽然 Sun 的源代码拥有明确的许可条款(包含可能的 GPL 文件),但这却不适用于反编译文件。当反编译代码时(比如使用 JAD 工具),生成的源代码属于运行反编译工具的人。使用反编译工具所生成的源文件无需遵守被反编译的代码所遵守的许可。对于 Java 来说这很容易就能实现,因为 Java 字节码文件中包含了足够的信息,这样编译后的代码与源代码的相似度非常高,哪怕无法获取到源代码也没问题。

当然了,现在并没有证据表明这些源代码是通过反编译工具生成的;这只不过是个假设而已。需要显式常量或是“魔力值”的很多 API 都是 API 契约的一部分,这些常量或数值并不只是随意添加到代码中的(这里的意思指的是很多 API 中都拥有一些常量或是数值,他们是 API 契约所要求的,因此根据反编译后的结果很难推测出这些常量或数值所代表的含义——译者注)。软件的反向工程有时用于在不同的版权下创建代码(虽然通常我们需要整洁的设计而非直接的反编译)。但这么做却无法回避专利问题,因此与这些侵犯了专利的测试代码相关的内容依然是个问题。

这还涉及到了与分布式版本控制系统如Git 相关的一个潜在问题。虽然代码已经从目前的树头(head of tree)中移除了,但还是可以通过检出之前的分支访问到他们。即便无法访问这些分支,但只要对仓库进行克隆就可以获得这些代码。Git 在这方面要比Hg 更加灵活,因为Git 拥有git --filter-branch 选项,可以重写历史以删除代码的所有访问痕迹,但Android 却没这么做。之所以这样是因为这会改变所有提交的标识符并且会对那些希望参与开发的人员产生不良影响;但对于检测不属于仓库中的代码这种情况应该是必要的。

既然有疑问的代码并没有随Android 操作系统一同发布而只是测试代码(已经从主分支中移除了),Google 就可以放心地说在发现后就已经移除了不恰当的代码,这并不会产生多大的版权问题。这并不会对Oracle 与Google 之间的法律诉讼之战造成多少影响, Groklaw 对此做过详尽的介绍。

查看英文原文: Android Java Copyright Infringements?

2011-01-26 01:373190
用户头像

发布了 88 篇内容, 共 264.3 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

NAT基础:NAT技术原理,静态NAT、动态NAT、NAPT、Easy IP、NAT Server的原理,以及各NAT的配置方法和转换示例。

Python-派大星

10月月更

软件要想做的好,测试必定少不了

华为云开发者联盟

测试 开发 华为云 企业号十月 PK 榜

AR人体姿态识别,实现无边界的人机交互

HarmonyOS SDK

AR

27位技术实战派负责人齐聚 深聊降本增效 你一定不想错过!

阿里技术

云计算 云原生 云栖大会 降本增效

FlyFish一周年,社区大咖邀你共话开源!

云智慧AIOps社区

低代码 可视化 数据可视化 大屏可视化 无代码

“程”风破浪的开发者|学习中的境界

林冲

学习方法 “程”风破浪的开发者

如何在C#或VB.NET程序中为幻灯片添加或删除批注

Geek_249eec

C# PPT VB.NET

报名倒计时1天!平头哥、中科院软件所PLCT实验室等技术专家解读最新RISC-V技术

OpenAnolis小助手

报名 risc-v 云栖大会 Workshop 龙蜥峰会

软件测试丨接口测试该怎么做?持证上岗的Charles,可以帮你做什么?

测试人

软件测试 接口测试 charles 测试开发

Spark on k8s在阿里云EMR的优化实践

阿里云大数据AI技术

大数据 spark 企业号十月PK榜

如何提升研发效能?我们先从指标谈起

Kyligence

数据分析 指标管理

JUC 浅析(四)

Andy

String源码分析(二)

知识浅谈

String类 10月月更

京东云开发者|京东云RDS数据迁移常见场景攻略

京东科技开发者

MySQL 数据同步 数据迁移 云迁移 数据订阅

教你处理数仓慢SQL常见定位问题

华为云开发者联盟

数据库 后端 华为云 企业号十月 PK 榜

阿里云云边一体容器架构创新论文被云计算顶会 ACM SoCC 录用

阿里巴巴云原生

阿里云 云原生 容器服务

36氪|元年科技发布新版数字化PaaS平台,更新多个组件

元年技术洞察

方舟 PaaS 中台战略 企业数字化

手把手教你从安装CentOS7.4镜像开始,搭建IoT视频监控系统

华为云开发者联盟

后端 开发 华为云 企业号十月 PK 榜

对话创始人:团队研发效能应该如何管理和度量?

LigaAI

团队管理 敏捷开发 研发管理 研发效能 企业号十月PK榜

JUC 浅析(三)

Andy

vue3 name 属性的使用技巧

new_cheng

Vue 前端 Vue3 VUE 3.0 源码

2022最新CSS高频面试题指南

CoderBin

CSS 前端 面试题 秋招 10月月更

ACL访问控制列表 基础、创建ACL访问控制列表的两种方式、配置ACL访问控制列表规则、修改ACL规则的默认步长。子网掩码、反掩码、通配符掩码的区别和作用。

Python-派大星

10月月更

要努力,但也别焦虑

源字节1号

程序人生

专访韩向东|元年科技:专业与技术并重,赋能财务数字化转型

元年技术洞察

数字化转型 财务数字化

华为数通HCIA小型拓扑综合实验,运用OSPF动态路由协议、ACL访问控制列表,交换机生成树协议,修改交换机根桥、交换机划分vlan、链路聚合等相关数通技术、NAT地址转换以及NAT网络地址转换的配置

Python-派大星

10月月更

从清华大学到苏州经贸,双一流和普通高校都在使用的数据科学教学实训平台

ModelWhale

大数据 人才培养 数据竞赛 实训 教学

从“汽车制造”生活案例到软件的建造者模式

宇宙之一粟

设计模式 建造者模式 Go 语言 10月月更

推广TrustAI可信分析:通过提升数据质量来增强在ERNIE模型下性能

汀丶人工智能

nlp

订单中心架构设计与实践

小小怪下士

Java 程序员 系统架构 架构设计

数字化时代,企业如何创新自己的客户服务

Baklib

Android侵犯Java版权了么?_Java_Alex Blewitt_InfoQ精选文章