Связь между Приложением Java и Приложением C ++ - PullRequest
4 голосов
/ 09 марта 2012

Я пытаюсь написать плагин для 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

Ответы [ 3 ]

5 голосов
/ 21 ноября 2012

Может быть, вам стоит взглянуть на Буферы протокола Google .

Поскольку вы рассматриваете JNI .Я бы посоветовал вам обратиться к этому учебному пособию IBM .

JNI позволяет Java-приложению вызывать методы c / c ++ и наоборот.

Также посмотрите наэто вопрос , если вы звоните Java из c ++.

3 голосов
/ 09 марта 2012

Я нашел несколько примеров, таких как здесь , здесь и здесь , которые рекомендуют либо использовать структуру общей памяти, либо использовать сокеты.

Я думаю, что в этом случае лучше всего было бы позволить вашим программам взаимодействовать через сокеты, так как ваши приложения не будут так тесно связаны, поэтому вам просто нужно указать IP, порт и набор команд.

Согласно это кажется возможным создать сервер C ++ на Kinect, но я не могу сказать ничего особенного, поскольку я никогда не работал над проектами, связанными с Kinect.

0 голосов
/ 17 мая 2018
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
...