【问题标题】:If a source code is not inside JDK's src.zip, does it mean it's not open source? [closed]如果源代码不在 JDK 的 src.zip 中,是否意味着它不是开源的? [关闭]
【发布时间】:2026-01-23 19:10:01
【问题描述】:

我想看sun.nio.ch.SocketChannelImpl#read函数的源码。但是Oracle的JDK的src.zip中没有对应的源码。

我知道我可以从从http://download.java.net/openjdk/jdk6/ 下载的 OpenJDK 的 openjdk-6-src-b27-26_oct_2012.tar.gz 中看到它。

但这是否意味着我无法从更流行的非开放 JDK 中获取它,因为它不是开源的?或者我遗漏了一些东西,我实际上可以从 Oracle JDK 中得到它?(我不太了解 JDK 和 OpenJDK 的区别)


更新:
我不明白为什么 Oracle 没有在 src.zip 中包含所有源代码,因为可以从 OpenJDK 获得它。他们想隐藏什么?我认为,如果 src.zip 中没有任何来源,则意味着 Oracle 为此使用了“一些封闭源代码的第三方组件”或“商业功能”。对?

引用https://blogs.oracle.com/henrik/entry/java_7_questions_answers:

" 问:我在哪里可以找到源代码? 答:Java 的源代码 SE 7 参考实现可从 JDK 7 项目中获得 OpenJDK 社区。​​p>

问:在 OpenJDK 中找到的源代码有什么区别 存储库,以及用于构建 Oracle JDK 的代码?答:是 非常接近 - 我们的 Oracle JDK 版本构建过程基于 OpenJDK 7 只需添加几部分,例如部署代码, 其中包括 Oracle 对 Java 插件和 Java 的实现 WebStart,以及一些封闭源代码的第三方组件,如 图形光栅化器,一些开源的第三方组件,比如 犀牛,还有一些零零碎碎的东西,比如额外的 文档或第三方字体。展望未来,我们的目标是 开源 Oracle JDK 的所有部分,除了我们考虑的部分 商业功能,例如 JRockit Mission Control(尚不可用 在 Oracle JDK 中),并用 开源替代方案,以实现代码之间更接近的平等 基地。”

【问题讨论】:

标签: java


【解决方案1】:

即使您在 src.zip 中找到源代码,也并不意味着它是开源的。开源更多的是关于许可。您应该在所有者站点访问适当的许可协议。详细讨论见https://softwareengineering.stackexchange.com/questions/52534/can-we-use-java-for-commercial-use

In this case.,恕我直言,许可证是 GNU 通用公共许可证版本 2。

【讨论】: