让 Java 与 Python、C、C++ 和 Ruby 对话

Posted

技术标签:

【中文标题】让 Java 与 Python、C、C++ 和 Ruby 对话【英文标题】:Getting Java to talk to Python, C, C++, and Ruby 【发布时间】:2011-01-19 14:56:17 【问题描述】:

我已经成功让 ProcessBuilder 运行外部脚本,但我仍然需要让 Java 与外部脚本通信。我认为我应该从流程中获取输入/输出流,并使用它们来发送和接收数据。我在为脚本提供输入时遇到了最大的麻烦。似乎我可以通过使用脚本的打印功能从脚本中获取输出,但我似乎无法让脚本注册来自主 java 程序的输入。

这个问题涉及四种语言,所以如果你只发布关于一种语言的答案就可以了。

【问题讨论】:

【参考方案1】:

Process 类的 getOutputStream() 方法返回一个您可以在 Java 中写入的流,该流连接到进程的标准输入流。您应该能够像通常阅读每种语言的标准输入一样阅读此内容(例如,cin 代表 C++,scanf 代表 C,STDIN.read 代表 Ruby,不懂 Python!)

如果这是您正在做的事情并且它不起作用(您的问题听起来可能是,但很难说)您能否发布一些代码以便更容易地查看您可能做错了什么?

【讨论】:

感谢 C++、C 和 Ruby 的命令!我让 Python 通过 raw_input 工作【参考方案2】:

您可能应该使用标准的进程间机制,例如管道或套接字。

所有这些语言都有可用于这两种语言的库,并且此策略允许在您的任意 2 个进程(Java/Ruby、Ruby/Python、Java/C 等)之间进行通信

【讨论】:

【参考方案3】:

在让 Java 与 Python 对话方面,您是否考虑过 Jython?

关于 C 和 C++,标准的想法是使用 Java Native Interface。一旦您可以与 C/C++ 对话,您就可以使用 C/C++ 与几乎任何其他语言对话,包括 Python 和 Ruby。

【讨论】:

以上是关于让 Java 与 Python、C、C++ 和 Ruby 对话的主要内容,如果未能解决你的问题,请参考以下文章

最全计算机资料(c c++ java python vb web 算法 r语言 大数据 视频剪辑)

TIOBE指数:C,Java和Python继续保持2月前3名

总结几点C/C++Java与Python的区别

如何让python调用C和C++代码

如何让python调用C和C++代码

如何让python调用C和C++代码