2009-10-12 72 views
3

我們有一個本地應用程序,我們可以通過JNI-> DLL或通過調用帶有命令行參數的EXE來訪問。這將是最好的方法?通過JNI/DLL或EXE執行本機代碼?

我們將每天調用約100次該方法。性能不是非常重要。這個本地應用程序是由我們公司以外的團隊開發的,因此我們對代碼不太熟悉(儘管我們擁有它)。

EXE路由看起來更簡單也更直接(尤其是因爲我們沒有使用大量的C)。如果您的DLL代碼存在內存泄漏或遇到其他問題,我還會用JNI來收集您的JVM。

回答

5

我強烈推薦.exe方法。

  1. ,如果它崩潰,你可以重生中的.exe
  2. 你不會從內存泄漏/損壞等遭受

的缺點是,你可能要.exe文件輸出到解析確定結果/狀態等,如果不是爲此設計的,那麼這可能是不切實際的(甚至不可能)。

但是,作爲第一種方法,產生.exe是最好的選擇。不要忘記consume the stdout/err concurrently,以避免任何.exe掛起問題(一個常見的問題,如果SO問題是相信)。

4

對於這種情況,我會調用.exe,主要是因爲在這種情況下不穩定的應用程序無法打破JVM。

每天調用一次.exe 100次很容易。

另一方面,如果.dll提供了一個良好的API,那麼使用它可能會給出更好的診斷問題的機會,如果出現問題。