Java Application和C ++ Application之间的通信

时间:2012-03-09 06:17:26

标签: java c++ java-native-interface kinect com+

我正在尝试为Java应用程序编写插件。该插件应该能够告诉Java应用程序已经识别出新事件(观察者设计模式,轮询......这不是重点)。问题是事件是来自Microsoft Kinect控制器的跟踪手势(因为我必须使用C ++和Microsoft Kinect SDK)。这意味着我必须在Java应用程序和我的Kinect应用程序之间进行通信。 我想到了类似于适配器设计模式的东西,其中Java应用程序“包括”接口(c ++头文件,DLL等)。首先我想到了JNI,但后来我必须编写一个将在两个应用程序端使用的DLL,对吧?我想到的另一件事是通过UDP(或更轻量级的东西?)等协议提供手势数据。我听到的最后一件事是写一个COM +程序集......但说实话,我对COM +的了解相当少。

JAVA APPLICATION << ----- ??? ----- >> KINECT APPLICATION

3 个答案:

答案 0 :(得分:5)

可能你应该看看谷歌的Protocol Buffers

因为您正在考虑JNI。 我建议你参考这个IBM tutorial

JNI允许java应用程序调用c / c ++方法,反之亦然。

另外看看这个 question,如果你从c ++调用java。

答案 1 :(得分:3)

我找到了一些示例,例如hereherehere,建议您使用共享内存结构或使用套接字。

我认为在这种情况下,让你的程序通过套接字进行通信是最好的主意,因为你的应用程序不会紧密耦合,所以你只需要暴露一个IP,一个端口和一组命令。

根据this,似乎可以在Kinect上创建一个C ++服务器,但除此之外我不能说太多,因为我从未参与过Kinect相关项目。

答案 2 :(得分:0)

JNI (Java Native Interface) allows the java application to call c/c++ 
methods.

All this requires that we have a means of communicating (Integrating Java 
with C++) between Java and C++. This is provided by the JNI (Java Native 
Interface).

For a practical example of using the JNI.

Calling native methods from Java see this url
https://www.javaworld.com/article/2077513/learn-java/java-tip-17--integrating-java-with-c--.html