我该在哪里找到JDK 1.5的源代码?

7

我在Oracle网站上找不到JDK 1.5的完整源代码下载链接,提供的链接只是循环跳转。请问在哪里可以找到完整的源代码?

3个回答

4
Java这个名词可以指很多不同的组件,它对于一些人可能意味着“Java虚拟机”,对于另一些人可能是“Java语言规范”,对于许多人来说是“Java编译器”,而对于相当多的人则是“Java语言库”。
如果您想要Java5版本的Java虚拟机(JVM)源代码,则可以在此处找到;但是,它不是开源许可证。第一个“开源”的Java副本是随“Java 6”一起发布的。如果您想要Java5源代码,则需要签署“Java研究员许可协议”,该协议为您提供了至少Java5的JVM源代码访问权限。在编写Java5环境的代码时,完全不需要JVM的源代码。
如果您想要Java5版的Java语言规范源代码,则可以在此处找到。尽管它可能允许您了解编译器在某些情况下是否应该抱怨错误,但是编写Java5环境的程序并不需要它。
如果您想要Java5编译器,则可以在Oracle旧版本Java开发工具包的存档中下载。如果您想要编写Java5程序,则通常最好下载并使用此提供的编译器。或者,您可以配置兼容的编译器(Java6 / Java7)以发出Java5代码。
如果您想要Java5语言库,则它们已包含在Java5开发工具包中。Java6和Java7开发工具包提供了语言库,这些库非常努力地与Java5源代码兼容;但是,较新的库还包括较新的功能和操作,股票Java5虚拟机将无法引用。同样,有技术可以安全地使用向后兼容的Java版本(6/7);但是,如果他们基于Java5开发工具包进行开发,则不需要应用任何额外的注意事项。语言库的“源代码”包含在JVM的源代码中,根据Java研究许可协议的规定,SUN被允许包含这种源代码。
尽管SUN以一种可以与Java5一起自由分发的方式许可了许多其他公司的技术,但SUN并不一定完全拥有Java5中的所有技术。因此,即使在Java研究员许可协议下,一些源代码也不可用(尽管编译后的库是可用的)。开源项目(例如OpenJDK)迅速使用开源库实现了这些缺失的“空洞”,以获得完全功能的开源Java堆栈;但是,那是Java6+(而不是Java5)。

感谢您详细的回复,我只是一个业余爱好者,想看看java.lang和其他基本包的源代码以满足我的好奇心。我应该查看Java档案吗? :)!! - hakish
如果你只是想查看“java.lang”相关的源代码,请参考Java6。至少它可以在没有限制性许可证的情况下使用。此外,要意识到大部分代码都是用Java编写的,并且有一些关键的“本地”支持。你需要了解JNI才能阅读它,而本地实现真正取决于JVM的实现。这些代码区域处理必须完成的事情,但不会在语言中公开(例如malloc内存和以允许自动垃圾回收的方式注册类)。有趣的东西;对于典型项目来说很少有用。 - Edwin Buck

1

Java 1.5不是开源的。引用维基百科:

2006年11月13日,Sun将Java的大部分作为自由和开放源代码软件(FOSS)发布,遵循GNU通用公共许可证(GPL)的条款。2007年5月8日,Sun完成了这个过程,除了一小部分Sun没有持有版权的代码外,使Java的所有核心代码都可在自由软件/开源分发条款下使用。

据我所知,以前可以获得源代码进行研究(我们的大学通过与Sun的特殊协议获得了源代码的访问权限),但我认为现在从Oracle那里获得源代码是不可能的。

在开源之前,有几个JVM和核心类的免费实现。请参阅http://en.wikipedia.org/wiki/Free_Java_implementations以获取示例。


0

3
你可以获得的所有源代码都在JDK中。 - Peter Lawrey
@PeterLawrey JDK不包含源代码。在2006年之前,Java并不是开源的。 - Matteo
3
@Matteo然而,它始终有一个src.zip文件,其中包含大部分JRE的源代码。 - Peter Lawrey
据我所知,没有。您还需要安装它。如果您不想安装JDK,为什么需要源代码的副本? - Peter Lawrey
@Matteo,他想查看的包java.lang可能在src.zip中具有Java方面的源代码;但是,该包中所有有趣的内容都在“本地”方法中。 src.zip未能打包任何非Java代码,并且我不确定它在Java5中是否可用。正如您所说,它也不包括javac、javap、java等可执行文件的源代码。 - Edwin Buck
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接