2012-01-19 82 views

回答

4

Java的名称可以应用于许多不同的组件,它们一起工作。它可能对某些人来说意味着“Java虚拟机”,对其他人来说可能是“Java语言规范”,对许多人来说可能是“Java编译器”,对许多人来说可能意味着“Java语言库”。

如果您希望Java5的Java虚拟机(JVM)的源代码为it is available;但不在开源许可下。 Java的第一个“开放源代码”副本与“Java 6”一起发布。如果您需要Java5源代码,则需要注册一个“Java研究员许可协议”,以便您访问JVM的源代码(至少是Java5)。在编写Java5环境的代码时,拥有JVM的源代码是完全没有必要的。

如果您需要Java语言规范Java5的源代码it is a text document (typically published as a book or on-line set of web pages)。尽管它可以让你理解编译器在某些情况下是否应该抱怨错误,但不需要编写Java5环境的程序。

如果你想Java5编译器,it can be downloaded in the oracle archives of old releases of the Java development toolkit。如果您想为Java5编写程序,那么下载并使用此产品通常是开发Java5程序的最佳实践。或者,您可以配置兼容的兼容编译器(Java6/Java7)来发出Java5代码。

如果您需要Java5语言库,它们包含在Java5开发工具包中。 Java6和Java7开发工具包提供的语言库需要付出很大的努力才能与Java5源代码兼容;然而,较新的库还包括Java5虚拟机无法引用的更新功能和操作。再次,有技术可以安全地使用Java的后向兼容版本(6/7);但是,如果他们的开发基于Java5开发工具包,则无需特别小心。语言库的“源代码”包含在Java研究许可协议下JVM的源代码中,允许SUN包含此类源代码。

虽然SUN已经从其他公司获得许多技术的许可证,并且可以随Java5自由分发,但SUN并不一定完全拥有Java5中的所有技术。因此,即使在Java研究者许可协议下,一些源代码也不可用(尽管编译的库是)。开放源代码项目(如OpenJDK)很快利​​用开放源代码库实现了这些缺失的“漏洞”,以获得功能齐全的开源Java堆栈;但是,那是Java6 +(不是Java5)。

+0

感谢您的详细回复,我只是一个业余爱好者,希望看到源代码java.lang和其他基本包来淬火我的好奇心..我应该检查Java档案? :)! – hakish

+0

如果你只是想看看“java.lang”的东西,看看Java6。至少可以在没有限制性许可的情况下使用。另外,要认识到它大部分都是用Java编写的,并有许多关键的“原生”背景。您需要知道您的JNI才能读取它,而本机实现依赖于JVM实现。代码的这些部分处理必须完成的事情,但不会在语言中暴露出来(像malloc'ing内存和以允许自动垃圾收集的方式注册类)。有趣的东西;对典型项目很少有用。 –

0
+0

我看不到在这个链接中的源代码只有二进制文件... – hakish

+3

你可以得到的所有源代码都在JDK中。 –

+0

不要忘记Java 5.0是如此古老,它在Oracle收购Sun之前已经是生命的终结了。它还会对OpenJDK进行预约,因此唯一可用的源代码位于JDK中。 –

1

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

2006年11月13日,Sun根据GNU通用公共许可证(GPL)的条款发布了许多Java作为免费和开源软件(FOSS)。 2007年5月8日,Sun完成了这一流程,除了Sun不拥有版权的一小部分代码之外,Sun还使用免费软件/开放源代码分发条款提供了所有Java核心代码。

据我记得有可能获得用于研究目的的源代码(我们的大学可以通过与Sun的特别协议访问源代码),但我认为这不可能从Oracle获取它。

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

相关问题