假设我有一个Java/Scala后端,我想用Python为它开发中间件。我没有开发中间件的经验,但我认为这意味着在Python中,我需要向运行中的Java/Scala后端程序发出命令,然后接收来自该后端的反馈。为了实现这一点,我需要对这两种语言进行接口,并且有几种接口Python和Java的选项。根据这些 页面的说法,有一些选择:
不幸的是,JPI、JNI、JPype和Jepp似乎不再被积极开发(上一次更新是在一年多以前)。Jython仍然处于活动状态,但我了解到不可能从Jython内部导入所有Python模块。JCC似乎是Java和Python之间的某种C++层,这似乎与直觉相反。
关于这个话题,我也有过找到 一些 问题,但是大多数看起来都已经超过3年了,在internet/Python中,这当然是很长的时间。
由于我对ZeroMQ消息传递库有一些经验,所以我可以使用它,但是我必须调整它的Java程序(这不会有那么大的麻烦,但是如果有更好的解决方案.)。
因此,我的问题是:考虑到我控制了Java/Scala后端,目前为该后端编写Python中间件层的最佳方法是什么?
发布于 2013-07-25 07:11:16
你还没有给出很多关于你想做什么的细节。如果您的中间件运行在一个单独的进程中,那么您的中间件用什么语言编写的语言可能不会有太大的区别,只要它们能够相互交谈--您可以按照您的建议使用ZMQ来实现这一点。
如果您实际上只是从您想用Python编写的层调用Java/Scala库,那么我将使用Jython。“无法加载所有模块”只是在您计划使用一些不可用的模块时才会遇到的问题。即使对于那些不可用的模块,您也应该能够找到您可以调用的合适的Java替代品。
最后,如果您真的想在Python和Java之间直接接口,可以查看巴贝尔。我认识一些成功地使用它来连接C、Java和Python程序的人,而且它似乎对他们很好。
https://stackoverflow.com/questions/17851096
复制相似问题