我正在尝试为Java应用程序编写插件。该插件应该能够告诉Java应用程序已经识别出新事件(观察者设计模式,轮询......这不是重点)。问题是事件是来自Microsoft Kinect控制器的跟踪手势(因为我必须使用C ++和Microsoft Kinect SDK)。这意味着我必须在Java应用程序和我的Kinect应用程序之间进行通信。 我想到了类似于适配器设计模式的东西,其中Java应用程序“包括”接口(c ++头文件,DLL等)。首先我想到了JNI,但后来我必须编写一个将在两个应用程序端使用的DLL,对吧?我想到的另一件事是通过UDP(或更轻量级的东西?)等协议提供手势数据。我听到的最后一件事是写一个COM +程序集......但说实话,我对COM +的了解相当少。
JAVA APPLICATION << ----- ??? ----- >> KINECT APPLICATION
答案 0 :(得分:5)
可能你应该看看谷歌的Protocol Buffers。
因为您正在考虑JNI。 我建议你参考这个IBM tutorial。
JNI允许java应用程序调用c / c ++方法,反之亦然。
另外看看这个 question,如果你从c ++调用java。
答案 1 :(得分:3)
我找到了一些示例,例如here,here和here,建议您使用共享内存结构或使用套接字。
我认为在这种情况下,让你的程序通过套接字进行通信是最好的主意,因为你的应用程序不会紧密耦合,所以你只需要暴露一个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