我在Technically what is the main difference between Oracle JDK and Open JDK?
阅读“Oracle JDK是OpenJDK的一个实现,不是开源的”
但JDK源代码是公开可用且免费的。对 。那怎么来不开源呢?在判断oracle JDK是开源的时候我可能错了,因为源代码可以免费但是不允许修改/扩展和重新分发,这就是为什么它不是开源的?
答案 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)