我知道你可以在像grepcode这样的地方查看Java的"源代码",但我正在寻找一些方法来查看构建在Java之上的C代码.我觉得这个问题肯定已被多次提出,但我找不到满意的答案.
这不是出于任何明确的目的 - 我只想了解编程语言如何"构建"得更好一点.
此外,如果有人可以展示如何查看生成的字节码,这可能也会有所帮助.
Oracle的官方JDK 7基于OpenJDK项目的代码,您可以从该链接下载该代码.还有一个JDK 8分支可从同一站点获得.
Java虚拟机(JVM)是一种执行*.class文件的虚拟计算机.大多数情况下,JVM是由一个在真实计算机上运行的其他语言(如C++)编写的程序模拟的.例如,当您在Windows机器上运行Java程序时,java.exe主要使用C++编写的程序假装是JVM,并执行您的*.class文件.像Java代码一样
++i;
Run Code Online (Sandbox Code Playgroud)
由Java编译器(用Java编写!)翻译成JVM操作码
iinc 0 1
Run Code Online (Sandbox Code Playgroud)
JVM包含用于处理该指令的代码(用C++或汇编语言编写)以及所有数百条附加指令 - 就好像它是真实机器语言中的操作码一样.事实上,它实际上更复杂:所有现代JVM在运行时将这些JVM操作码转换为特定于平台的机器代码,但执行该转换的代码当然是用一些本地(非Java)语言编写的,如C++或装配.
Interwebs上有很多文章可以很好地解释这个问题:这是一个很好的文章.