QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:373214
用户头像

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

关注

评论

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

Flink State - Backend Improvements and Evolution in 2021

Apache Flink

大数据 flink 开源 编程 实时计算

引领创新技术发展,百度荣获两项数据中心国家级荣誉

百度大脑

Trisk:在 Flink 上实现以 task 为中心的流处理动态 Reconfiguration 的 Control Plane

Apache Flink

大数据 flink 开源 编程 实时计算

如何合理使用 CPU 管理策略,提升容器性能?

阿里巴巴云原生

阿里云 容器 云原生 资源管理 ACK

"5G通达,AI赋能" AI在网络规划中的应用实践

百度大脑

学生管理系统架构设计

随欣所遇

架构实战营

六年老员工的幸福感

万事ONES

如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始

阿里巴巴云原生

阿里云 云原生 架构设计

Python3 cpython优化 实现解释器并行

字节跳动终端技术

字节跳动 编程语言 代码优化 Python3 火山引擎MARS

全国人工智能师资培训班·上海站火热招生中

百度大脑

测试环境与路由 | 阿里巴巴DevOps实践指南

阿里云云效

云计算 阿里云 运维 云原生 测试

基于外包学生管理系统的架构文档

刘帅

1月云短信报告出炉,华为云跃居榜首

博睿数据

模块三作业

Geek_ec866b

架构实战营

Flink 实践教程-进阶(8):自定义标量函数(UDF)

腾讯云大数据

如何思考需求的优先级?

石云升

产品经理 需求分析 2月月更 需求排序

模块三:学生管理系统详细架构设计

刘璐

如何高效交付专有云?百度智能云有妙招

百度大脑

人类的AI调校计划:像个淑女,或者硬汉

脑极体

云计算情报局预告|告别 Kafka Streams,让轻量级流处理更加简单

阿里巴巴云原生

阿里云 云原生 消息队列 Kafka ETL

网站开发进阶(六十八)防抖节流

No Silver Bullet

防抖节流 2月月更

“首席AI架构师”+57人!百度AICA第五期结业啦

百度大脑

中远海运集团总经理付刚峰率队访问百度 双方将加强合作

百度大脑

系统学习 TypeScript(三)——基础类型

编程三昧

typescript 前端 2月月更

内网安全-记一次内网靶机渗透

网络安全学海

黑客 网络安全 信息安全 渗透测试

架构实战营:模块八作业

Geek_93ffb0

「架构实战营」

云原生小课堂 | Envoy请求流程源码解析(一):流量劫持

York

云原生 istio envoy

网络安全kali渗透学习 web渗透入门Metasploitable2靶机系统介绍

学神来啦

一块屏幕的全球研发之旅

万事ONES

ONES 案例分析

学生管理系统详细架构方案

IT屠狗辈

架构实战营 详细架构

关于阿里云多活容灾的那点事

阿里巴巴云原生

阿里云 云原生 应用多活

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