在java和python之间传递数据

时间:2010-11-01 10:20:20

标签: java python django jython

如果我的问题是noob,请道歉。我正在使用pgsql 8.4运行Django 1.2并且我需要在从用户获取输入后运行Java程序,进行一些计算并将结果返回给用户。

我是否知道在Java和Python Django之间传递数据的最佳方法是什么,以便上面的场景得到解决?我听说过Jython,但根据Django文档,它需要扩展jython-Django,但目前它不支持django 1.2.x.我应该使用stdout传递数据吗?

感谢别人听我说。

4 个答案:

答案 0 :(得分:4)

如果你所做的只是调用Java进行一些计算,那么subprocess是最简单的方法,但我只是想在那里抛出另一个选项。

JPype是一个包,允许您在调用Java代码时在Python程序中运行JVM,就像它是Python(example)一样。

也就是说,就像Jython一样,你直接调用Java代码,就像你正在运行CPython那样的子进程。考虑JPype,如果由于某种原因,Java代码不容易从shell脚本(也就是子进程)调用,或者需要进行大量的双向通信。

答案 1 :(得分:3)

使用subprocess并将Java程序作为一个简单的子进程运行。它非常非常简单且速度相当快。

如果您需要做一些更具伸缩性的事情,您应该考虑使用Java代码创建一个glassfish服务器,这样您的Python就可以向Java发出Web服务请求。这更具可扩展性,但也更有效。

答案 2 :(得分:0)

您也可以使用Py4J执行此任务:

{{1}}

首先应该启动Java程序,然后从Python调用Java方法。

py4j没有启动jvm,它只是连接到已经启动的Java进程。

答案 3 :(得分:0)

It might be what you wanted to avoid. but at the most simple way of things, using sockets / shared file with java will be the best solution. python socket can send information and revise it from java. On the other hand if that feel like a pain. if you use java and python at the same computer you can use a shared file, that java can read from and python can wright to.