用于解释Java HelloWorld字节代码的C代码

时间:2012-05-22 04:00:24

标签: jvm interpreter bytecode

什么是简单的C / C ++代码,它可以解释只包含System.out.print()语句的java类文件(字节代码)。(我看了一下简单的开源JVM,但由于它们的完整性,它们有点复杂。)

或者我在哪里可以找到一个解释良好的解释指南(即Java字节代码的解释)

1 个答案:

答案 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实现......当然,你可以使用更简单的设置,但大多数结构和工作仍然放入加载,链接和初始化阶段站立。它并不像你的预感告诉你那么容易。