下载本文示例代码
Sun 发布 JDK 5.0 源代码的决定,除了提供对公共类的访问之外,还提供了对非公共类的访问,这给了开发人员更深入了解最新发行版幕后内容的机会 —— 前提是您不介意遵守许可条款。我不会卷入所谓“Sun 是不是应该把 Java 平台开源”的争论,而是向您展示如何得到源代码并讨论两个许可选项:Sun 社团源代码许可(SCSL)和 Java 研究许可(JRL)。我还会简要地讨论 6.0 Mustang 二进制和源码的早期访问快照版本。
标准源代码下载 Java 平台公共 API 的源代码和 Javadoc 中提及的所有类都属于标准 JDK 交付的一部分,您可以访问它们。为访问这些源文件,您需要将它们与 JDK 下载安装在一起。如果给出大小(18 MB),那么 JDK 下载是可选的,所以您必须确保在下载的时候选择了该下载。安装之后,只需把文件解压到子目录中即可,如清单 1 中演示的那样。清单 1. 返回 1.4 默认的 Steel 主题
cd c:\jdk1.5.0
mkdir src
cd src
jar xvf ..\src.zip
现在,如果您在开发代码的时候遇到问题,得到意外的堆栈转储,您就可以查看系统类的源代码,看看是为什么。例如,用 null 参数调用 StringBuffer 构造函数是不对的。为什么呢?查看源代码,就了解到,构造函数试图取得 string 的长度。虽然在 Javadoc 中有文档说明, StringBuffer 构造失败会抛出 NullPointerException 异常,但是查看源代码可以让您知道 为什么 会失败。因为您不能对 null 对象指针调用 length 方法。
注意: 源文件保存为具有 Unix 换行符,如果用记事本(Notepad)这样的编辑器查看源代码,阅读起来会很困难,因为文件中没有回车符。如果您想转换这些文件,那么 JavaWorld 的 Java Tip 64仍然会有用。
JDK 5.0 源代码包 JDK 没有提供平台的全部源代码。提供了 java.* 和 javax.* 包中的公共类,但是没有提供 sun.* 或虚拟机中的公共类。JDK 5.0 源代码包就是弥补这个不足的。如果您能够遵守其中任何一个许可的条款(稍后介绍),那么您就可以访问平台(允许 Sun 公开的平台)的完整源代码。这两个许可许可了一些东西,但是它们也有自己的再发布限制。您可以从 Java 2 Platform Standard Edition 5.0 页面访问源代码(请参阅 参考资料)。只要单击您要遵守的许可的下载链接,阅读并接受许可条款,然后单击第一个下载链接,就会显示组的文件列表。这时,有两个下载链接,一个是 55 MB 的 zip 格式的源代码文件,另一个是安全性文件(例如加密供应者),只有不到 1 MB。下载源文件,解压后就可以研究了。还有另外一个 2 MB 的二进制文件下载,它包括共享库、字体和图片。有它更好,没有也可以。
Sun 社团源代码许可 最新的 J2SE 发行版中引入的 Sun 社团源代码许可(Sun Community Source License,SCSL),针对研究社团做了少量修改。该许可在 5.0 中基本上没有变化。
SCSL 不是一个开源许可,但是允许您自由地访问源代码,前提是您可以接受许可(而且在授权国家居住)。但是,根据您处理许可的方式,您可能要付费。虽然不是每个人都同意该许可,而且我也不想对它发表评论,Sun 的立场是它可以防止平台标准分叉。无论如何,这个许可确实让您可以访问整个平台,这比起不能访问来说当然有优势。
那么您到底可以访问到什么呢?对于入门者来说,您可以访问系统资源,例如线程调度器和内存模型。如果您不喜欢现有的模型,那么您可以创建自己的。您可以测试您的假设,看看您的模型是否更好。当然,这可能就进入了 Java 研究许可(JRL)的领域。如果您想修补的 bug 已经等候了很久,但是在 Sun 的优先级列表中没有排在前面,那么您可以自己修补它,然后把补丁发回 Sun。您想自己留着补丁?当然可以,但是重新发布的修复了这个 bug 的平台会有一些限制。这时就需要许可费和兼容性测试套件了。想要创建一个干净版本的虚拟机或者库?那么背道而驰,不要赞成这个许可(即 JRL)。
Java 研究许可 Java 研究许可(Java Research License,JRL)是 Java 源代码版本许可方案的新成员。在研究社团对 SCSI 中原来的研究部分提出诸多抱怨之后,专门针对大学和研究社团创建了 JRL。如果您是大学或者研究机构的老师或研究人员,那么下载具有 JRL 的源代码是比较合适的。许可中的研究使用权力部分规定,您可以用这项技术与其他也获得许可的人进行研究,修改代码,并发表您的研究。
但是,有一些灰色区域。许可说,您可以与其他人获得许可的人共享源代码;许可还说,如果不是主要的部分,您还可以分发对象代码以及发布源代码的摘录。现在,如果您计划教授您的研究,而您的学生要为课程付费(也就是说成为了商业行为,而不仅仅是研究目的),那么您就违反了许可。如果您想要根据通过 JRL 访问搜索到的材料来教学,那么建议您最好先咨询一下法律顾问。
Mustang Sun 最近带给我们的一个惊奇就是对 J2SE 6.0(代号为 Mustang)的早期访问。(为了满足您的好奇心,透露一下 7.0 的代号为 Dolphin。)J2SE 的下一版本预计在 2006 年春发布,在 JRL 许可之下,您既可以访问该版本的源代码,也可以访问它的二进制代码。该下载中缺少 Javadoc,您必须在构建 JDK 之后自行构建它。
值得花时间现在研究 Mustang 吗?这取决于您的意向。从纯研究的角度来说,这次发布的版本当然是份大礼。如果您需要计划公司未来的产品战略,而许可条款与您的意向又不冲突,那么还是值得调查一下的。对于本栏目的普通读者来说,如果您想在事情完全准备好之前了解它,而且不介意运行一些还没有经过完全测试,可能还不是全功能的代码,那么您就下载研究它吧。反正我知道我是准备进行研究的。
结束语 如果您居住在一个已授权可以接收源代码的国家,那么现在得到 JDK 源代码比平台以前的发行版容易得多了。过去,您必须打印协议,物理地签署协议,并传真回 Sun。之后您才能访问一个具有源代码下载权的私有 Web 站点。现在,只需要用鼠标指向并单击,单击,单击,就能得到源代码。只要许可条款与您的意向不冲突,而且您是属于比较好奇的那类人,那么源代码就是值得研究的好东西,可以学习更多有关 Java 工作原理的内容。对于 Mustang 来说,看看这个平台未来要走向何方会更有趣。
Sun 发布 JDK 5.0 源代码的决定,除了提供对公共类的访问之外,还提供了对非公共类的访问,这给了开发人员更深入了解最新发行版幕后内容的机会 —— 前提是您不介意遵守许可条款。我不会卷入所谓“Sun 是不是应该把 Java 平台开源”的争论,而是向您展示如何得到源代码并讨论两个许可选项:Sun 社团源代码许可(SCSL)和 Java 研究许可(JRL)。我还会简要地讨论 6.0 Mustang 二进制和源码的早期访问快照版本。
标准源代码下载 Java 平台公共 API 的源代码和 Javadoc 中提及的所有类都属于标准 JDK 交付的一部分,您可以访问它们。为访问这些源文件,您需要将它们与 JDK 下载安装在一起。如果给出大小(18 MB),那么 JDK 下载是可选的,所以您必须确保在下载的时候选择了该下载。安装之后,只需把文件解压到子目录中即可,如清单 1 中演示的那样。清单 1. 返回 1.4 默认的 Steel 主题
cd c:\jdk1.5.0
mkdir src
cd src
jar xvf ..\src.zip
现在,如果您在开发代码的时候遇到问题,得到意外的堆栈转储,您就可以查看系统类的源代码,看看是为什么。例如,用 null 参数调用 StringBuffer 构造函数是不对的。为什么呢?查看源代码,就了解到,构造函数试图取得 string 的长度。虽然在 Javadoc 中有文档说明, StringBuffer 构造失败会抛出 NullPointerException 异常,但是查看源代码可以让您知道 为什么 会失败。因为您不能对 null 对象指针调用 length 方法。
注意: 源文件保存为具有 Unix 换行符,如果用记事本(Notepad)这样的编辑器查看源代码,阅读起来会很困难,因为文件中没有回车符。如果您想转换这些文件,那么 JavaWorld 的 Java Tip 64仍然会有用。
JDK 5.0 源代码包 JDK 没有提供平台的全部源代码。提供了 java.* 和 javax.* 包中的公共类,但是没有提供 sun.* 或虚拟机中的公共类。JDK 5.0 源代码包就是弥补这个不足的。如果您能够遵守其中任何一个许可的条款(稍后介绍),那么您就可以访问平台(允许 Sun 公开的平台)的完整源代码。这两个许可许可了一些东西,但是它们也有自己的再发布限制。您可以从 Java 2 Platform Standard Edition 5.0 页面访问源代码(请参阅 参考资料)。只要单击您要遵守的许可的下载链接,阅读并接受许可条款,然后单击第一个下载链接,就会显示组的文件列表。这时,有两个下载链接,一个是 55 MB 的 zip 格式的源代码文件,另一个是安全性文件(例如加密供应者),只有不到 1 MB。下载源文件,解压后就可以研究了。还有另外一个 2 MB 的二进制文件下载,它包括共享库、字体和图片。有它更好,没有也可以。
Sun 社团源代码许可 最新的 J2SE 发行版中引入的 Sun 社团源代码许可(Sun Community Source License,SCSL),针对研究社团做了少量修改。该许可在 5.0 中基本上没有变化。
SCSL 不是一个开源许可,但是允许您自由地访问源代码,前提是您可以接受许可(而且在授权国家居住)。但是,根据您处理许可的方式,您可能要付费。虽然不是每个人都同意该许可,而且我也不想对它发表评论,Sun 的立场是它可以防止平台标准分叉。无论如何,这个许可确实让您可以访问整个平台,这比起不能访问来说当然有优势。
那么您到底可以访问到什么呢?对于入门者来说,您可以访问系统资源,例如线程调度器和内存模型。如果您不喜欢现有的模型,那么您可以创建自己的。您可以测试您的假设,看看您的模型是否更好。当然,这可能就进入了 Java 研究许可(JRL)的领域。如果您想修补的 bug 已经等候了很久,但是在 Sun 的优先级列表中没有排在前面,那么您可以自己修补它,然后把补丁发回 Sun。您想自己留着补丁?当然可以,但是重新发布的修复了这个 bug 的平台会有一些限制。这时就需要许可费和兼容性测试套件了。想要创建一个干净版本的虚拟机或者库?那么背道而驰,不要赞成这个许可(即 JRL)。
Java 研究许可 Java 研究许可(Java Research License,JRL)是 Java 源代码版本许可方案的新成员。在研究社团对 SCSI 中原来的研究部分提出诸多抱怨之后,专门针对大学和研究社团创建了 JRL。如果您是大学或者研究机构的老师或研究人员,那么下载具有 JRL 的源代码是比较合适的。许可中的研究使用权力部分规定,您可以用这项技术与其他也获得许可的人进行研究,修改代码,并发表您的研究。
但是,有一些灰色区域。许可说,您可以与其他人获得许可的人共享源代码;许可还说,如果不是主要的部分,您还可以分发对象代码以及发布源代码的摘录。现在,如果您计划教授您的研究,而您的学生要为课程付费(也就是说成为了商业行为,而不仅仅是研究目的),那么您就违反了许可。如果您想要根据通过 JRL 访问搜索到的材料来教学,那么建议您最好先咨询一下法律顾问。
Mustang Sun 最近带给我们的一个惊奇就是对 J2SE 6.0(代号为 Mustang)的早期访问。(为了满足您的好奇心,透露一下 7.0 的代号为 Dolphin。)J2SE 的下一版本预计在 2006 年春发布,在 JRL 许可之下,您既可以访问该版本的源代码,也可以访问它的二进制代码。该下载中缺少 Javadoc,您必须在构建 JDK 之后自行构建它。
值得花时间现在研究 Mustang 吗?这取决于您的意向。从纯研究的角度来说,这次发布的版本当然是份大礼。如果您需要计划公司未来的产品战略,而许可条款与您的意向又不冲突,那么还是值得调查一下的。对于本栏目的普通读者来说,如果您想在事情完全准备好之前了解它,而且不介意运行一些还没有经过完全测试,可能还不是全功能的代码,那么您就下载研究它吧。反正我知道我是准备进行研究的。
结束语 如果您居住在一个已授权可以接收源代码的国家,那么现在得到 JDK 源代码比平台以前的发行版容易得多了。过去,您必须打印协议,物理地签署协议,并传真回 Sun。之后您才能访问一个具有源代码下载权的私有 Web 站点。现在,只需要用鼠标指向并单击,单击,单击,就能得到源代码。只要许可条款与您的意向不冲突,而且您是属于比较好奇的那类人,那么源代码就是值得研究的好东西,可以学习更多有关 Java 工作原理的内容。对于 Mustang 来说,看看这个平台未来要走向何方会更有趣。
下载本文示例代码
驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可驯服Tiger之JDK 5.0 源代码许可
阅读(137) | 评论(0) | 转发(0) |