2011-06-15 21 views
6

什麼是與NO庫嵌入JVM在C程序的推薦方式。這意味着JVM作爲eDSL執行引擎。 (不是完整的Java平臺環境)我試圖使用另一種基於JVM的語言,而不是Java本身。推薦使用NO庫在C程序中嵌入JVM的方法?

+1

我記得自己與JamVM玩。它很小,用C語言編寫,嵌入它相當容易。然而,它依賴於GNU Classpass,它非常大,虛擬機在嵌入式環境中表現不佳,所以我最終編寫了自己的Java機器。但是如果你在做桌面應用程序,你可能會考慮將JamVM作爲一個選項。 – Archie 2011-08-30 23:08:19

+2

澄清「無圖書館」。你選擇了哪種虛擬機?它提供了一個靜態的JVM實現來鏈接到你的代碼?基於DSO(DLL/SO)的版本是文檔化的,也許是JNI標準的一部分,可與其他本地代碼集成。鑑於您正在使用另一種基於JVM的語言,您可能不會遇到以前的評論者指出的GNU Classpath問題。 – 2011-10-19 17:36:35

+0

爲清楚:看來你是想創建自己的DSL,你打算解析成JVM字節代碼,你需要一個JVM實現嵌入到你的系統執行所產生的字節碼。我對嗎? – drnewman 2011-10-28 21:51:28

回答

0

也許你想嵌入一些其他的JavaVM-s,那麼你可以看看Kaffe,但我不太瞭解它,它可能無法滿足你的需求。我對JVM規範的理解是類加載器是它的一個重要組成部分(它需要一些核心類)。

什麼是你想要的基於JVM的語言DSL使用?

1

這聽起來可能有些瘋狂,但我會建議embedding Monousing IKVM運行Java代碼。 Mono是一個相對較小且便攜的虛擬機,適用於嵌入(您甚至可以將它靜態鏈接到您的應用程序),而IKVM是Java 1.6的忠實實現,它能夠運行Eclipse等甚至如此巨大的特性。

使用單聲道/ IKVM的組合,你甚至可以名列前茅的時間編譯應用程序到x86機器代碼(見Compiling Java Code to x86 Code)。

相關問題