JVM是开源代码吗?


72

JVM是开源代码吗?如果没有,如何获取JVM代码?


JVM是一个规范!具有不同的实现方式
Ayoub Omari

Answers:


36

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


3
但是,开始指导Java运行方式的最佳位置是src.zip,只有熟悉了大多数关键类之后,您才能继续使用hotspot模块。
彼得·劳瑞

我可以问你一些吗?在查看完src\share\native\java\lang\Thread.cI之后,我发现本机方法的实现已interrupt0被挖掘JVM_interrupt。在哪里可以找到它的来源?那是热点吗?
圣安东尼奥

2
似乎那里的存储库浏览链接不起作用。这样做是:github.com/openjdk-mirror/jdk7u-hotspot
eis

答案不应该只是单纯的联系
而已

61

这完全取决于您使用哪个JVM。

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

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

2013年5月更新

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

另外,可以在此处找到Java 7源的最新版本。。这也包括自GA以来对Java 7发行版的修复。

而且,对于任何人来说都不足为奇,可以在这里找到Java 8源。


0

JVM的核心部分在OpenJDK的hotspot模块中。但是,您最需要的是src.zip。

这些类之外的热点模块是

  • 主要是用C ++
  • 并非总是容易理解。多年来,这种情况有所改善,新代码往往会更好,因为他们更加意识到代码将具有更广泛的用途。
  • 通常不是您要找的东西。

因此,如果您想了解JVM的运行方式,最好查看常用的类。例如,即使lambda在运行时实际工作的程度较低,它大部分也位于src.zip中,而在JVM中却没有太多。

库的大多数源代码都随src.zip文件中的JDK一起提供。您的IDE将自动使用它。与熟悉JDK本身相比,熟悉这些库中的类要好得多。


4
giri询问的是JVM,而不是JDK。
Michael Graczyk 2012年

2
是的,他想要的是JVM,而不是JDK的JVM,因此您现在不高兴了。
peterh-恢复莫妮卡2015年

2
我再次检查了一次,只为您。不,JVM的源(即所谓的热点JVM,Java字节码解释器)不在src.zip中。在src.zip中,只有JDK的源代码,这是标准系统库集合。你真的不明白区别吗?
peterh-恢复莫妮卡2015年

2
OP要求提供JVM的源代码。它不存在,它存在于oracle的公共网站上。您见过这个src.zip吗?在你的生活中?曾经吗
peterh-恢复莫妮卡2015年

2
我认为有一个非常简单的理智的答案:“对不起,也许我真的在4年之前就误解了这个问题”,然后我回答:“没问题,兄弟”。在Google找到这个问题并连续找到4个BAD答案后,我才感到不高兴。这些答案都是来自20k + SE老用户。
peterh-恢复莫妮卡2015年

-2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.