Oracle JDK 不是开源项目吗?

Is Oracle JDK not an open source project?

我在 Technically what is the main difference between Oracle JDK and Open JDK? 阅读

"Oracle JDK is an implementation of the OpenJDK and is not open source"

但是 JDK 源代码是公开可用且免费的。正确的 。那么它为什么不开源呢?可能我在这里判断 oracle JDK 是开源的是错误的,因为源代码可能可用且免费,但不允许 modify/extend 并进一步重新分发它,这就是为什么它不是开源的?

OpenJDK 在 GPL v2 许可下开源,而 OracleJDK 使用 Oracle 二进制代码许可协议(更多关于 here and here)。

当您说源代码可以免费获得但不允许进一步修改和重新分发时,您没有错。

But [the Oracle] JDK source code is openly available and free. Right?

严格来说,没有

1) Oracle JDK 的完整源代码不可用。 JDK 源代码 ZIP 文件仅包含 public class 库 API 的源代码。不是一些"internal"class。不是 JDK / JRE 工具链。不是 JVM 运行时本身;例如JIT 编译器、GC 实现、验证器等

2) 对于可用的子集,您需要接受 Oracle 许可。

3) 可用的源代码在版权中说 headers 它是 Oracle(或 Sun)专有的。

So how come its not open source?

见上文。

May be i am wrong here because source code may be available and free but is it not allowed to modify/extend and redistribute it further, that why it is not open source ?

这是原因之一。

开源并不仅仅意味着源代码可以免费获得。它也可以在没有不当限制的情况下使用它。

(如果您想要 Oracle JDK 的 完整 源代码,那么它 不是 免费提供的,而且条款和条件非常严格。)


相比之下,OpenJDK 代码库由 GPLv2 覆盖("Classpath exception" 阐明了构建应用程序以使用 OpenJDK JVM / class 库不受 GPL 约束。)OpenJDK 的所有内容都可以作为源代码使用...无需您签署任何内容。

当然,GPL 限制了您可以做什么,但这些限制旨在使代码免费(自由)并保护 end-user.

的权利