0

ステートメントのみを含む Java クラス ファイル (バイト コード) を解釈できる単純な C/C++ コードは何ですか (System.out.print()単純なオープンソース JVM を見てきましたが、完全性のために少し複雑です)

。インタプリタを作成するための十分に説明されたガイド (つまり、Java バイトコードの説明)

4

1 に答える 1

1

Java Virtual Machine Specificationを探しているのかもしれません。

あなたの質問は最初は些細なことのように思えるかもしれませんが、これは、JVM が次のような単純なクラスの内部の側面にいかにうまく配置されているかによるものです。

final class WorldGreeter {

    public static void main(final String[] argv) {
        System.out.println("Greetings, Earth!");
    }
}

仕様の第 5 章、つまりLoading, Linking, and Initializingを読むと、最も単純なプログラムを実行するために仮想マシンが実行しなければならない作業がたくさんあることがわかります。

これらすべての複雑な段階の必要性を指摘するために、標準の Oracle JDK を使用していると仮定します。このブログ投稿によると、System.out の初期化にはかなりの作業が必要になることが予想されます。つまり、いくつかのさまざまなクラスのロードと、さらに重要なことに、動作する JNI レイヤーです。

これで、Oracle JDK 実装を使用する必要がある理由はありません...確かに、より単純なセットアップを使用できますが、ロード、リンク、および初期化の段階に入れられる構造と作業のほとんどはそのままです。あなたの予感があなたに言うほど簡単ではありません。

于 2012-05-24T19:21:13.473 に答える