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

Chr*_*ton 2 c java bytecode

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

这不是出于任何明确的目的 - 我只想了解编程语言如何"构建"得更好一点.

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

Ern*_*ill 5

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上有很多文章可以很好地解释这个问题:这是一个很好的文章.

  • @Chris:标准JVM Hotspot是用C/C++(主要是C++)编写的.但是你可以用你喜欢的任何语言写一个VM,甚至是Java. (2认同)