java和c的互操作性++; C++ C++,它需要用两种不同语言编写java和C++的程序,需要在C++组件和java组件之间进行动态的交互通信。我知道JNI和JNA调用Java中的原生方法,但我认为这种方法不适合我的目的。p> 例如:假设一个程序,它的用户界面是用C++编写的,而在爪哇中,我认为通过JNI和JNA来完成这两个组件的通信是不可能的。例如,开放式办公是用java和C++编写的。 我搜索了互联网,找到了一些进程间通信的方法 像共享内存、管道、信号、消息传递。。。但我不知道进程间通信是我所需要的。看起来ipc是用来在两个不同的进程中通信软件的,但我的程序都是一个进程(我说的对吗?!)

java和c的互操作性++; C++ C++,它需要用两种不同语言编写java和C++的程序,需要在C++组件和java组件之间进行动态的交互通信。我知道JNI和JNA调用Java中的原生方法,但我认为这种方法不适合我的目的。p> 例如:假设一个程序,它的用户界面是用C++编写的,而在爪哇中,我认为通过JNI和JNA来完成这两个组件的通信是不可能的。例如,开放式办公是用java和C++编写的。 我搜索了互联网,找到了一些进程间通信的方法 像共享内存、管道、信号、消息传递。。。但我不知道进程间通信是我所需要的。看起来ipc是用来在两个不同的进程中通信软件的,但我的程序都是一个进程(我说的对吗?!),java,c++,interop,language-interoperability,Java,C++,Interop,Language Interoperability,所以我的问题是:用不同语言编写的程序是如何进行通信的?而我如何才能做到这一点?JNI的创建正是为了您所描述的目的;为什么它不是“你需要的” 另一种选择:消息代理,具有不同语言的实现,如 但是,由于您正在强调延迟,这可能不适合您的需要 您可以使用套接字,但随后必须对数据进行反序列化。我见过人们使用临时文件作为程序之间传递数据的缓冲区。我没有这方面的经验,但这只是一个建议。这是msdn上的一个关于通信的链接,我需要非常低的延迟,所以套接字不好。“我知道有jni和jna”…“但我认为这种方法不适合我的

所以我的问题是:用不同语言编写的程序是如何进行通信的?而我如何才能做到这一点?

JNI的创建正是为了您所描述的目的;为什么它不是“你需要的”

另一种选择:消息代理,具有不同语言的实现,如


但是,由于您正在强调延迟,这可能不适合您的需要

您可以使用套接字,但随后必须对数据进行反序列化。我见过人们使用临时文件作为程序之间传递数据的缓冲区。我没有这方面的经验,但这只是一个建议。这是msdn上的一个关于通信的链接,我需要非常低的延迟,所以套接字不好。“我知道有jni和jna”…“但我认为这种方法不适合我的目的。”你为什么这么认为?JNI似乎正是你想要的。“我不认为这两个组件可以通过jni和jna进行通信”再说一遍,你为什么这么认为?只是想知道:你认为如何运行一些二进制。。。和Java JVM在同一个过程中?意思:当然你有两个进程,当然你需要进程间通信。@mehrdad你可以使用共享内存,但在java中这样做可能很困难,所以你可能不得不使用jni或jna。我在一家大型IT企业工作。我们正在使用AMQ。够好吗?!说真的-你不应该依赖别人的意见。你应该坐下来深入分析你的需求;然后你应该转向互联网,寻找可用的解决方案;对于每一个选项,您都应该了解每个选项的优缺点,以了解每个选项如何符合您的需求。选择选项A是因为有人告诉你某个“企业”正在使用它。。。可能会成功;但是你学不了多少表演。使用谷歌,我花了3秒钟找到。。。但你宁愿花10多秒钟写下另一个问题。这就是我刚才告诉你的:如果你想成为一名认真的软件工程师,那就自己动手吧!(在这里提问并不是挖掘)