JVM是开源代码吗?

时间:2010-01-08 07:28:24

标签: java jvm

JVM是开源代码吗?如果没有,我怎样才能获得JVM的代码?

4 个答案:

答案 0 :(得分:59)

这完全取决于您使用的JVM。

如果您使用OpenJDK JVM,则可以从here获取源代码 如果您使用Kaffe JVM,则可以从here获取来源 如果您使用Sun JVM版本6或更高版本,则可以从here获取源代码。

如果您使用的是早于6的Sun JVM,那么您通常可以获得学术许可下的源代码。如果您使用IBM,Oracle,HP或其他JVM,则源未打开。

2013年5月更新

上述链接仍然可以访问版本6源,或者可以通过this link访问它。后一个链接还包括一个方便的族谱表,显示了Oracle JDK和OpenJDK版本如何相互匹配。

此外,可以找到更新版的Java 7源here。这还包括自GA以来对Java 7发行版的修复。

并且,毫不奇怪,可以找到Java 8源代码here

答案 1 :(得分:32)

在这里查看热点JVM:http://openjdk.java.net/groups/hotspot/

答案 2 :(得分:-1)

JVM的核心部分位于OpenJDK的热点模块中。但是你需要的更有可能是src.zip。

这些类的热点模块是

  • 主要使用C ++
  • 并不总是很容易理解。这种情况多年来有所改进,新代码往往更好,因为他们更加意识到代码将有更广泛的消费。
  • 通常不是你想要的。

因此,如果您想了解JVM的运行方式,最好查看常用的类。例如,即使是lambda在运行时真正工作的低级别的东西,主要是在src.zip中,在JVM中也不多。

库的大部分源代码都带有src.zip文件中的JDK。您的IDE将自动使用它。与使用JDK本身相比,熟悉这些库中的类要好得多。

答案 3 :(得分:-1)

即使您无法绕过Oracle愚蠢的类路径异常,也没有开源的jvm。简而言之,openjdk仍然与$$驱动方案紧密相关,该方案迫使您与商业虚拟机竞争。与Microsoft没什么两样,您可以在C#甚至免费提供.net库的情况下使用C#,但可以维护对Visual Studio的控制,这实际上迫使最终用户使用Windows作为所选环境。