2012-05-22 31 views
0

什麼是可以解釋僅包含System.out.print()語句的Java類文件(字節碼)的簡單C/C++代碼(我看過簡單的開源JVM,但它們有點複雜因爲完整的。)

或者在哪裏可以找到一個很好的解釋引導,使用於解釋Java HelloWorld字節碼的C代碼

+0

你有什麼特別的理由想要這麼做嗎?這很相關,很可能有更好的方法。 – templatetypedef

+0

問:你正在尋找一個反編譯器(只是爲了理解字節碼)還是解釋器(實際運行它)? [DJ Decompiler](http://download.cnet.com/DJ-Java-Decompiler/3000-2213_4-10046809.html)可以說是最好的之一;它只需要20.00美元。恕我直言...... – paulsm4

+0

你可能也想看看[JSava](http://blog.zortrium.net/archives/96) – paulsm4

回答

1

也許你正在尋找的Java Virtual Machine Specification的解釋(即Java字節碼解釋)。

雖然你的問題似乎微不足道,在第一,這是因爲只有如何好一個門面的JVM地上空,甚至一個簡單的類的這樣的內部方面:

final class WorldGreeter { 

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

通過的第五章閱讀這個規範,即Loading, Linking, and Initializing,你會發現虛擬機必須做很多工作才能運行最簡單的程序。

爲了指出所有這些複雜階段的必要性,我假設您使用的是標準的Oracle JDK;根據this blog post,你會期望System.out的初始化需要相當多的工作 - 即加載幾個不同的類,更重要的是工作的JNI層。

現在,沒有理由需要使用Oracle JDK實現......當然,您可以使用更簡單的設置,但大部分結構和工作都放入加載,鏈接和初始化階段仍然站立。這不像你的預感可能告訴你那麼容易。