Java应用程序与C+之间的通信+;应用

Java应用程序与C+之间的通信+;应用,java,c++,java-native-interface,kinect,com+,Java,C++,Java Native Interface,Kinect,Com+,我正在尝试为Java应用程序编写一个插件。插件应该能够告诉Java应用程序新事件已经被识别(观察者设计模式、轮询……这不是重点)。问题是跟踪事件来自微软Kinect控制器(我使用C++和微软Kinect SDK,因为我必须这样做)。这意味着我必须在Java应用程序和Kinect应用程序之间进行通信。 我想到了一种适配器设计模式,其中Java应用程序“包括”接口(c++头文件、dll等)。首先我想到了JNI,但后来我必须编写一个DLL,它将在应用程序的两个方面使用,对吗?我想到的另一件事是通过UD

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

JAVA APPLICATION << ----- ??? ----- >> KINECT APPLICATION
JAVA应用程序>KINECT应用程序

我发现了一些示例,如和,建议您使用共享内存结构或使用套接字

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


根据Kinect可能会创建一个C++服务器,但除此之外我也没多说,因为我从来没有在Kinect相关项目上工作过。

< P>也许你应该看看谷歌的.< /P> 既然你在考虑。 我建议你参考一下这个

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

也看看这个
,如果你正在从C++调用java。插座!我要仔细看看。泰!工作起来很有魅力!我决定使用UDP。。。看起来不错;)。。。谢谢@SeveFriede:请记住,尽管UDP速度更快,但并不保证包的交付。如果您决定让应用程序进行远距离通信,这可能会有问题;)谢谢你的提示!但目前整个系统都在本地机器上运行;)
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