什么是简单的C / C ++代码,它可以解释只包含System.out.print()
语句的java类文件(字节代码)。(我看了一下简单的开源JVM,但由于它们的完整性,它们有点复杂。)
或者我在哪里可以找到一个解释良好的解释指南(即Java字节代码的解释)
答案 0 :(得分:1)
也许您正在寻找Java Virtual Machine Specification。
虽然你的问题一开始看起来似乎微不足道,但这只是因为JVM的外观在一个简单的类的内部方面有多好:
final class WorldGreeter {
public static void main(final String[] argv) {
System.out.println("Greetings, Earth!");
}
}
通过阅读规范的第五章,即Loading, Linking, and Initializing,您将看到虚拟机必须做很多工作才能运行最简单的程序。
为了指出所有这些复杂阶段的必要性,我假设你正在使用标准的Oracle JDK;根据{{3}},你会期望System.out的初始化需要相当多的工作 - 即加载几个不同的类,更重要的是一个工作的JNI层。
现在,你没有理由需要使用Oracle JDK实现......当然,你可以使用更简单的设置,但大多数结构和工作仍然放入加载,链接和初始化阶段站立。它并不像你的预感告诉你那么容易。