前端Java,后端C++,如何加入?
让我们举一个过分基本的例子,我有一个程序通过一个目录并抓取目录中的文件列表。为了参数的缘故,假设这是用C++完成的。那么我希望使用Java Swing来呈现文件列表?前端Java,后端C++,如何加入?
这是如何完成的?
你可以让你的C++程序写入Stdout,然后你的Java程序可以读取它。然后,您可以让您的Java前端执行您的C++后端,然后读取结果。
This Article是如何使用stdout/stderr的一个很好的信息来源。
C++程序将列表放入特定文件中,Java程序读取该文件? 另一种方式可能是使用套接字(我不知道Java足够了解它的IPC可能性),以便在“实时”节目之间进行通信。最后,如果你必须同时使用C++和Swing,那么你就不能在一个单独的程序中完成这个任务。
+1以使用套接字。我总是喜欢这种方法。它可以是瞬时的,同步很容易。您可以让Java程序使用TCP套接字进行侦听,然后C++程序可以连接到该端口并发送TCP消息。 –
* ...你不能在一个单独的程序中完成*除非你使用JNI –
Kevin建议使用Java Native Interface(JNI)。或者,如果您需要在C++之间建立流程边界,则需要将运行C++代码的进程中的对象序列化为JVM进程。
你也可以在这个Dr. Dobb's article from 1998找到一些用途。
混淆Java和任何其他语言(不会编译成JVM字节码)是异端的。它必须都是纯粹的Java,免得cooties消耗你,或者什么。 – Omnifarious