Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Java ‹-› C-мост

Автор вопроса: Peter PenzovОтветов: 1

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

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

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

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

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

clinuxjavasocketsrpc

Ответы

Ответ 1 · рейтинг 8 · Prof. Falken

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

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

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

При выборе DBus ознакомьтесь с документацией по Java и файлом руководство.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы