Java和JVM许可证


17

Java许可是否允许其他公司创建自己的Java语言版本或只是准确地实现它?关于JVM的同样问题。

我听说Sun起诉Microsoft更改其.NET版本的Java实现和Java for Google Android,但我只是不能完全理解整个概念。

Answers:


25

您可以编写实现Java语言规范的编译器或编写实现Java虚拟机规范的JVM,但是当您正式希望将其称为“ Java”时,您必须通过通过TCK的测试来证明其兼容(技术兼容性套件)并从Oracle处购买许可证。

但是,Oracle并不容易使其他方执行此操作。Apache拥有自己的JVM实现(Apache Harmony),但以前的Sun(现为Oracle)不合作以提供TCK,也不让Apache获得许可证,这引起了Apache和Oracle之间的强烈不满。

微软很早以前就有自己的Java版本(确实称为“ Java”)。他们试图更改它以使其特定于Windows,而Sun当然不喜欢它。发生了一场诉讼,微软败诉,退出了自己的Java版本并创建了.NET,这是完全不同的事情,就像Java的工作原理一样工作......

关于Android的诉讼完全不是基于此。Google并不是说Android是Java。该诉讼是关于专利的。甲骨文在自己的JVM实现中拥有许多想法和概念的专利,并声称Google在未获得甲骨文的专利许可的情况下在Android中使用了相同的专利想法。


2
Apache希望免费获得TCK和许可,这是Sun拒绝的权利(这是他们的权利)。Microsoft IMO受Sun的熏陶,因为他们所做的工作符合语言规范,他们在Java之上创建了一个库,以简化与Windows的接口。Sun在同一时间推出Swing的时机很差。Sun当时利用美国政治中的反MS情绪获利并获胜。
jwenting 2011年

“正式称为Java”是什么意思?我可以修改jvm并出售吗?我可以将其命名为“具​​有Java支持的VM”吗?
piotrek

1
@jwenting-MS所做的完全不符合Java规范。它不仅是“之上的库”(应该很好),而且是完全不兼容的实现(它没有通过使用Java商标的要求的Sun一致性测试)。不论政治形势如何,Sun绝对都正确。
mikera 2012年

@mikera,除了MS从来没有因为这个原因而将它称为Java ...
jwenting 2012年

1
问题是MS向现有Java类添加了方法,使针对它们编译的代码与标准类不兼容。当然,这将创建锁定,而Java的前提是应该在任何未更改的平台上使其运行不变。
彼得·克里恩斯

3

嗯,据我所知,您可以随意执行该规范-为了能够合法地将其称为“ Java”,您必须许可并通过兼容性工具包,这显然并非易事。

Android不是使用Java语言的“ java”。它甚至不尝试通过TCK。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.