2015-03-23 3 views
-1

Я хочу написать программу на двух разных языках java и C++, которая требует динамической и интерактивной связи между ее компонентом C++ и компонентом java.i знаю, что jni и jna для вызова собственных методов в java, но i не думаю, что этот метод подходит для моей цели.Взаимодействие java и C++

например: скажите программу, что ее пользовательский интерфейс написан на языке C++, а другой - в java, я не думаю, что передача этих двух компонентов может быть выполнена через jni и jna. например, Open Office записывается в java и C++. Я искал в Интернете и нашел какой-то метод для межпроцессного общения как разделяемая память, труба, сигналы, передача сообщений, ... но я не знаю, что взаимодействие между процессами - это то, что мне нужно. кажется, ipc предназначен для передачи программного обеспечения в два разных процесса, но моя программа - это один процесс (я прав ?!)

так что мой вопрос: как программы, которые его компонент написан на другом языке, общаются друг с другом? и как я могу достичь этого?

+0

Вы можете использовать сокеты, но тогда вам придется де-сериализовать данные. Я видел, как люди использовали временный файл в качестве буфера для передачи данных между программами. У меня нет опыта в этом, но это всего лишь предложение. Вот ссылка на msdn о связи https://msdn.microsoft.com/en-us/library/aa365574%28v=vs.85%29.aspx –

+0

Мне нужна очень низкая латентность, поэтому сокет не очень хорош. – mehrdad

+0

«Я знаю, что есть jni и jna» ... », но я не думаю, что этот метод подходит для моей цели». Почему ты так думаешь? JNI, похоже, именно то, что вы ищете. «Я не думаю, что общение этих двух компонентов можно сделать через jni и jna». Снова, почему вы так думаете? – user2079303

ответ

1

JNI был создан именно для той цели, которую вы описываете; почему именно это не «что вам нужно»?

Один другой вариант: брокеры сообщений с реализациями для разных языков, как http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

Но, как вы подчеркивая латентный, это может не быть для вашего.

+0

Я рассмотрю это, спасибо, но если вы знаете, что технология, используемая корпоративным программным обеспечением, скажите мне. – mehrdad

+2

Я работаю на крупном ИТ-предприятии. Мы используем AMQ. Достаточно хорошо ?! Серьезно - вы не должны ** полагаться на мнение других людей. Вы должны ** сидеть ** и анализировать свои требования в глубину; и затем вы должны обратиться в Интернет, найти доступные решения; и для каждого из них, снова ** вы ** должны узнать о преимуществах и недостатках каждого варианта, чтобы понять, как каждый вариант соответствует вашим требованиям. Выбор варианта A, потому что кто-то говорит вам, что какое-то «предприятие» использует его ... может получиться; но вы не будете так много учиться. – GhostCat

+0

спасибо !, AMQ приятно, можете ли вы дать мне приблизительное время ожидания? это в нано? микро секунд? воен? – mehrdad

Смежные вопросы