有没有办法查看基础Java的C代码?

时间:2013-07-11 01:49:42

标签: java c bytecode

我知道您可以在像grepcode这样的地方查看Java的“源代码”,但我正在寻找一些方法来查看构建在Java之上的C代码。我觉得这个问题肯定已被多次提出,但我找不到满意的答案。

这不是出于任何明确的目的 - 我只想了解编程语言如何“构建”得更好。

此外,如果有人可以展示如何查看生成的字节码,那也可能会有所帮助。

1 个答案:

答案 0 :(得分:5)

Oracle的官方JDK 7基于the OpenJDK project的代码,您可以从该链接下载该代码。还有一个JDK 8分支可从同一站点获得。

Java虚拟机(JVM)是​​一种执行*.class文件的虚拟计算机。大多数情况下,JVM是由用其他语言(如C ++)编写的程序模拟,该程序在真实计算机上运行。例如,在Windows机器上运行Java程序时,主要使用C ++编写的程序java.exe假装为JVM,并执行*.class个文件。像

这样的Java代码
++i;

由Java编译器(用Java编写!)转换为像

这样的JVM操作码
iinc 0 1

JVM包含用于处理该指令的代码(用C ++或汇编语言编写)以及所有数百条附加指令 - 就像它是真实机器语言中的操作码一样。事实上,它实际上更复杂:所有现代JVM在运行时将这些JVM操作码转换为特定于平台的机器代码,但执行该转换的代码当然是用一些本地(非Java)语言编写的,如C ++或装配。

Interwebs上有很多文章可以很好地解释这些内容:here's a nice one.