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

Communication between Java Application and C++ Application

本文关键字:应用程序 通信 之间 C++ Java      更新时间:2023-10-16

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

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

也许你应该看看谷歌的协议缓冲区。

既然你在考虑JNI。我建议您参考本IBM教程。

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

看看这个问题是,如果您是从c++调用java。

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

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

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

JNI(Java Native Interface)允许Java应用程序调用c/c++方法。

所有这些都要求我们有一种通信方式(集成Java使用C++)。这是由JNI(Java Native接口)。

有关使用JNI和从Java调用本机方法的实际示例,请参阅InfoWorld的这篇文章。