Oracle JDK不是开源项目吗?

时间:2016-09-25 07:53:44

标签: java open-source

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

阅读

“Oracle JDK是OpenJDK的一个实现,不是开源的”

但JDK源代码是公开可用且免费的。对 。那怎么来不开源呢?在判断oracle JDK是开源的时候我可能错了,因为源代码可以免费但是不允许修改/扩展和重新分发,这就是为什么它不是开源的?

2 个答案:

答案 0 :(得分:8)

  

但[Oracle] JDK源代码是公开可用且免费的。正确?

严格来说,没有。

1)Oracle JDK的完整源代码不可用。 JDK源代码ZIP文件仅包含公共类库API的源代码。不是一些“内部”类。不是JDK / JRE工具链。不是JVM运行时本身;例如JIT编译器,GC实现,验证器等。

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

3)可用的源代码在版权标题中表示它是Oracle(或Sun)专有的。

  

那怎么来不开源呢?

见上文。

  

这可能是我错了,因为源代码可能是免费的,但是不允许进一步修改/扩展和重新分发它,这就是为什么它不是开源的?

这是一个原因。

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

(如果你想要Oracle JDK的完整的源代码,那么免费提供,条款和条件相当严格。)

相比之下,OpenJDK代码库由GPLv2覆盖(带有“类路径异常”,它阐明了构建使用OpenJDK JVM /类库的应用程序不受GPL约束。)OpenJDK的一部分是可以作为源代码使用...无需签署任何内容。

当然GPL限制你可以做什么,但这些限制旨在使代码免费(如在自由中)并保护最终用户的权利。

答案 1 :(得分:1)

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

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