2014-02-08 29 views
7

Clojure編譯器(它只是一個jar/java應用程序)用來生成JVM字節碼的庫/ api是什麼?我很好奇,因爲字節碼是由java而不是javac在運行時生成的,所以它是一個輸出jvm字節碼的java程序。Clojure編譯器如何生成JVM字節碼?

回答

4

Clojure編譯器如何生成JVM字節碼?

這只是Java編程(除非他們已經將自己的代碼生成器引導到Clojure ......這看起來不太可能)。作爲總體簡化,正在打開一個文件,按照JVM規範指定的「classfile」格式寫出代碼,然後關閉文件。 (或者編寫代碼來一個ByteArrayOutputStream或同等學歷)。

爲了記錄在案,有什麼什麼Clojure的編譯器做的和Java編譯器可以做,如果你在運行時調用它之間有質的不同。但顯然,由於語言的差異以及各個開發人員的不同想法和優先級,細粒度細節會有所不同。


1 - 如果你想知道如何代碼生成器在一般工作,請繼續閱讀編譯器編寫的教科書。關於Clojure的所有細節,請查看源代碼...

+0

我知道關於Clojure和Java字節碼生成的一個例外是Clojure本地清除,它沒有Java模擬iirc。 – noisesmith

+0

有一個CinC(Clojure中的Clojure)項目,可以在不使用任何Java代碼的情況下生成Clojure字節碼,但尚未成熟。 – noisesmith

相關問題