Java <-> C Bridge - PullRequest
       22

Java <-> C Bridge

8 голосов
/ 06 февраля 2012

Я работаю над приложением, которое имеет веб-интерфейс Java на сервере Glassfish и ядро ​​C, которое реализовано как демон Linux.

Моя самая большая проблема сейчас заключается в том, как делать удаленные вызовы процедур. Мне нужно вызывать функции и методы в обоих направлениях. Вот возможные решения, о которых я могу подумать:

  1. Используйте собственный интерфейс Java и сетевые сокеты для реализации RPC.
  2. D-Bus - насколько мне известно, DBus можно использовать для RPC между Java и C.

Я хочу использовать самый простой способ без использования внешних библиотек или фреймворков. Можно ли напрямую вызывать функции / методы между Java и C, используя только сокеты? ОС, которую я использую - Centos.

Есть ли более элегантный способ соединения двух языков?

1 Ответ

8 голосов
/ 06 февраля 2012

Без внешних библиотек остаются только сокеты. Но я бы классифицировал DBus как внешнюю библиотеку, не так ли?

Если программа на C может использовать сокеты, нет необходимости в Java Native Interface. Код Java может открывать сокеты из Java , вызывая сокеты, которые слушает код C.

Если вы разрешите DBus, возможно, вам следует рассмотреть множество сетевых и RPC-протоколов, которые имеют библиотеки для C и Java. (Опять же, нет необходимости использовать JNI.)

Пройдя путь DBus, посмотрите документацию Java и учебник .

...