2

假设我有一个 Java/Scala 后端,我想用 Python 为它开发中间件。我没有开发中间件的经验,但我认为这意味着我需要从 Python 内部向正在运行的 Java/Scala 后端程序发出命令,然后从该后端接收反馈。为此,我需要连接这两种语言,并且有几个选项可用于连接 Python 和 Java。根据这些 页面,有一些选项:

  • JPI
  • JNI
  • 类型
  • 杰普
  • 杰通
  • JCC

不幸的是,JPI、JNI、JPype 和 Jepp 似乎不再被积极开发(最后一次更新是一年多前)。Jython 仍然处于活动状态,但我读到无法从 Jython 中导入所有 Python 模块。JCC 似乎是 Java 和 Python 之间的某种 C++ 层,这似乎也违反直觉。

我还发现 了一些 关于该主题的问题,但大多数问题似乎已经超过 3 年,这在互联网/Python 领域当然是很长一段时间。

因为我对 ZeroMQ 消息传递库有一些经验,所以我可以使用它,但我必须为它调整 Java 程序(这不会有那么大的麻烦,但如果有更好的解决方案..) .

所以我的问题是:考虑到我可以控制 Java/Scala 后端,目前为该后端编写 Python 中间件层的最佳方法是什么?

4

1 回答 1

1

你没有提供很多关于你想要做什么的细节。如果您的中间件在单独的进程中运行,那么只要它们可以相互通信,您的中间件用什么语言编写可能不会有太大的不同——您可以按照您的建议使用 ZMQ 做到这一点。

如果您实际上只是从您想用 Python 编写的层调用 Java/Scala 库,我会选择 Jython。如果您计划使用一些不可用的模块,“无法加载所有模块”只是一个问题。即使对于那些不可用的模块,您也应该能够找到可以调用的合适的 Java 替代品。

最后,如果您真的想直接在 Python 和 Java 之间进行接口,您可以查看Babel。我知道有些人已经使用它成功地连接了 C、Java 和 Python 程序,而且它似乎对他们来说工作得很好。

于 2013-07-25T07:11:16.937 回答