假設我正在用C++設計一個跨平臺的應用程序,該應用程序可以通過附加組件進行用戶擴展。然後應用程序提供一個C++ API並加載動態對象(.so
,.dll
等)。但是,這對於用戶必須針對6個目標平臺(Windows x86
/x86-64
,MacOS X x86
/x86-64
和GNU/Linux x86
/x86-64
)進行編譯來說很麻煩。在Java中使用Java作爲「腳本」語言
爲了保持便攜性,我想提供一個Ruby API使用libruby
。通過一些工作,我帶來了一個概念證明。問題是我很擔心表演。這些加載項可能會變大,並且CRuby並不是那麼快。
然後我想,爲什麼不是Java?
- Java字節碼具有更好的運行時性能,尤其是使用JIT;
- 它是便攜式;
- 分銷很簡單,用戶只需要提供一個
jar
; - 用戶可以提供閉源加載項(即使反編譯Java字節碼並不困難);
- 更多的人比Ruby更瞭解Java。
現在的問題是,如何做到這一點?我做了一些研究,只發現約JNI(Java原生接口)。然而,這似乎能夠從Java調用C++而不是其他方式。
請檢查這個早期的崗位http://stackoverflow.com/questions/819536/how-to-call -java-功能從-C –