※ 引述《yoshilin (我是台湾人 我挺关说)》之铭言:
: 个人的理解是
: 任何平台上的JVM实作
: 都应该保证同一程式能执行
: 若google在android上的JVM
: 不能使用相同的API定义
: 那就保证不能执行
: 那像IBM等自行开发的JVM是否也有相同问题?
呃,首先,单用"Java"这个词,他的含意其实是跟上下文脉络有关的
一般用到"Java"的时候可能对应的意义有三个
1. Language
这指的是猴子们(误)在写程式时所使用的语法,这也是Android号称使用
"Java"的地方
2. Runtime API
这个指的是像java.* android.*那些package所提供的环境标准函式功能,
这边才是Oracle v. Google的战场,更精确的说,如果你去翻android的
API,会发现有android/java/javax/org.apache这几个开头的package,
Oracle便是告Google在android API中提供的部分java package跟Java SE
一样,在这点上触犯了Oracle的专利/著作权。
这边才是上诉推翻初审结论的点。
3. Virtual Machine
实际执行bytecode的虚拟机,这边争议比较小,因为
1. Dalvik从很多观点来看都不是Java VM
2. Google号称Dalvik是"cleanroom"(跪求译词)实作
虽然Dalvik被发现有几行code当初的猴子偷懒直接c/p JVM的code,但是
初审法官认定那几行太过简单且几乎是必然会那样写,两边达成协议这个
c/p的动作没有对Oracle造成任何损失。
当然,当初Oracle的诉状是认为Google在这3点上都侵权,但是在前期各种
攻防之后事实上最后只剩下新闻中的37个API的"著作权",其他诉求有的被
判定专利无效/没有侵权、有些双方达成协议Oracle并没有任何商业损失,
有的则是被认为这是当初Sun大力推广Java而导致Google认为可以使用。
值得注意的是,上诉所推翻的点是在API的"著作权"。
IBM的JVM应该不会被同样的论点攻击,因为
1. IBM JVM跑的还是Java,并没有割Oracle/Sun推广Java的稻尾 (Oracle有攻
击Android这点)
2. IBM没有自己搞一套SDK宣称这是不同的平台然后里面还继续带java.*
比较有可能被搞的情况会是,IBM JVM code流出,然后被发现里面有抄袭HotSpot
的code。