2010-04-29 15 views
0

我已經用C語言編寫了一個命令行界面程序。這種程序(如你所知)等待終端中輸入的用戶命令,並根據它們作出反應。事實上,該程序實現了一個回調函數,該函數解析命令並調用相應的函數以響應用戶。如何使Java和C程序一起通信

現在,我必須爲此程序的桌面(Ubuntu)版本創建一個Java GUI(圖形用戶界面),然後將相同的程序移植到Android平臺(當然GUI將尊重Android框架),所以我正在尋找最好的方式來做到這一點。

我聽說過JNI和JNA,我不知道哪一個最適合我。順便說一下,JNI和JNA之間的主要區別是什麼。

其他IPC技術和中間件(如DBUS)如何?

任何建議將不勝感激。

在此先感謝。

+0

您的C和Java程序可以通過命名管道或套接字等進行通信。 – 2010-04-29 20:00:25

回答

4

如果你的程序的功能通過命令行完全可用(並且它只能通過簡單的命令而不是基於curses的全屏界面),那麼只需將GUI接口與C通過命令行編程而不是搞亂JNI。

只需使用ProcessBuilder來啓動程序並通過stdin和stdout流與它通信。