JVM是开源代码吗?如果没有,我怎样才能获得JVM的代码?
答案 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。
这些类的热点模块是
因此,如果您想了解JVM的运行方式,最好查看常用的类。例如,即使是lambda在运行时真正工作的低级别的东西,主要是在src.zip中,在JVM中也不多。
库的大部分源代码都带有src.zip文件中的JDK。您的IDE将自动使用它。与使用JDK本身相比,熟悉这些库中的类要好得多。
答案 3 :(得分:-1)
即使您无法绕过Oracle愚蠢的类路径异常,也没有开源的jvm。简而言之,openjdk仍然与$$驱动方案紧密相关,该方案迫使您与商业虚拟机竞争。与Microsoft没什么两样,您可以在C#甚至免费提供.net库的情况下使用C#,但可以维护对Visual Studio的控制,这实际上迫使最终用户使用Windows作为所选环境。