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