驯服Tiger: JDK 5.0源代码许可

Sun 最近通过 Sun 社团源代码许可(Community Source License,SCSL)和 Java 研究许可(Java Research License,JRL)发布了 JDK 5.0 的源代码。这个月,Tiger 的专栏作家 John Zukowski 从新发布的细节中抽空出来,概述了许可的条款以及为开发人员提供了哪些源代码访问。他还简要介绍了一下 J2SE 6.0 发行版 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 的二进制文件下载,它包括共享库、字体和图片。有它更好,没有也可以。

时间: 2024-11-01 00:03:45

驯服Tiger: JDK 5.0源代码许可的相关文章

驯服Tiger

JDK 5.0 中最吸引人的地方在于集合框架的一些最突出的特性上,例如:支 持泛型的语言级别上的新变化,以及可以在 java.util.concurrent 包中找到的 并发集合工具包.实际上,以前在 developerWorks 上的"驯服 Tiger: 并发集 合"和"介绍 JDK 5.0 中的泛型"这两篇教程中介绍了上述特性.但是其他增 强还没有得到足够的重视.在本文中,我将研究其他三个变化:更新过的 Arrays 和 Collections 类.新的 Que

驯服Tiger: 虚拟机更新

在驯服 Tiger 的这一期中,John Zukowski 介绍了最新的 Java 虚拟机如何改善启动时间.降低内存需求.提高性能.Tiger 提供了共享的数据档案文件.新的线程调度算法以及致命错误处理器(用来处理故障).请在本文附带的 讨论论坛 上与作者和其他读者分享您对本文的想法.(也可以单击本文顶部或底部的 讨论 访问讨论论坛.) 致命错误处理器 JVM 包含几个新的命令行选项.其中一个不太标准的选项是"致命错误处理器".用 -XX:OnError 选项启动 JVM,可以指定在发

在JDK 6.0中基于StAX分析XML数据

xml|数据 J2EE/XML开发者通常都是使用文档对象模型(DOM)API或简单的API for XML(SAX) API来分析XML文档.然而,这些API都有其缺点.其中,DOM API的缺点之一是消耗大量的内存,因为在该XML文档可以被导航之前,必须创建一个完整的XML文档的内存结构.而SAX API的缺点在于,它实例了一种推分析模型API,其中分析事件是由分析器生成的.比较之下,StAX则是基于一种拉分析模型.在本文中,你将首先创建你自己的XML文档,然后学习使用各种不同方法来对之进行分

Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制

伸缩 内容: synchronized 快速回顾 对 synchronized 的改进 比较 ReentrantLock 和 synchronized 的可伸缩性 条件变量 这不公平 结束语 参考资料 关于作者 对本文的评价 相关内容: Java 理论与实践 系列 Synchronization is not the enemy Reducing contention IBM developer kits for the Java platform (downloads) 订阅: develop

Java理论与实践: JDK 5.0中更灵活、更具可伸缩性的锁定机制

JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择.例如, java.util.concurrent.lock 中的类 ReentrantLock 被作为 Java 语言中 synchronized 功能的替代,它具有相同的内存语义.相同的锁定,但在争用条件下却有更好的性能,此外,它还有 synchronized 没有提供的其他特性.这是否意味着我们应当忘记 synchronized ,转而只用 ReentrantLock 呢?并发性专家 Brian Goetz 刚从他的夏

驯服Tiger: 并发集合

在 Java 编程的早期阶段,位于 Oswego 市的纽约州立大学(SUNY) 的一位教授决定创建一个简单的库,以帮助开发人员构建可以更好地处理多线程情况的应用程序.这并不是说用现有的库就不能实现,但是就像有了标准网络库一样,用经过调试的.可信任的库更容易自己处理多线程.在 Addision-Wesley 的一本相关书籍的帮助下,这个库变得越来越流行了.最终,作者 Doug Lea 决定设法让它成为 Java 平台的标准部分 -- JSR-166.这个库最后变成了 Tiger 版本的 java.

安装Oracle JDK 7.0与8.0 for Mac OS X后Eclipse启动报错的解决之道

启动 Eclipse 时,直接报错The JVM shared library "/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/../jre/lib/server/libjvm.dylib"does not contain the JNI_CreateJavaVM symbol. Unable to find any JVMs matching architecture "i386&qu

求funcode平台下,太空战机的vc6.0源代码

问题描述 求funcode平台下,太空战机的vc6.0源代码 小学期要交的作业,但毕竟只学了一学期c,写出的代码能基本实现功能,但是与理想还有很大差距, 解决方案 写出的代码能基本实现功能,已经不错了.继续努力吧,自己写才有进步的机会.

ubuntu17.04编译Tiny4412 Android5.0源代码

跟着ubuntu12.04一样,我解开了4412的Android5.0源代码. 因为前面这篇文章已经安装了一些开发环境,所以这里不再哆嗦. 还是和这篇文章一样的: http://blog.csdn.net/morixinguan/article/details/70190518 遇到下面这个错误: 那么,这次就有经验了,直接用下面这个解决方法: clang编辑器的问题,在art/build/Android.common_build.mk 中将host 默认编辑器使用clang关掉,找到WITHO