在Java中使用Python
可能重复的问题:
Java与Python的整合
我有一大堆已经写好的代码,全部都是用Java写的,但我想用Python来处理一些新的部分。我需要进行一些文本和语言处理,我更喜欢用Python和像NLTK这样的库来完成这项工作。
我知道有个叫Jython的项目,但我觉得它是让你在Python中使用Java及其库,而不是反过来使用——我这样理解对吗?
如果我理解得没错,那有什么好的方法可以让Java和Python之间互相调用呢?理想情况下,我希望能在Java中调用Python的方法,然后把结果返回到Java里。
7 个回答
我觉得你不能通过Jython来使用NLTK,因为NLTK依赖于Numpy,而Numpy并没有移植到JVM上。如果你需要使用NLTK或者其他的CPython扩展,可能需要考虑一些进程间通信的方法,让CPython和JVM之间能够交流。话说回来,有一个项目可以让Java调用CPython,叫做Jepp:
反过来(从CPython调用Java代码)是JPype和javaclass的目标:
sourceforge.net/projects/jpype/
pypi.python.org/pypi/javaclass/0.1
我自己没有使用过这些项目,所以不能保证它们的质量。
我会写一个Python模块来处理文本和语言的相关工作,然后在jython中搭建一个小桥,让你的Java程序可以和它互动。这个jython桥非常简单,主要就是把Java的请求转发给Python模块,然后把Python模块的回答再返回给Java模块。jython使用起来很简单,设置也不需要超过15分钟。
祝你好运!
我知道Jython这个项目,但看起来它是让你在Python里面使用Java和它的库,而不是反过来使用——我理解错了吗?
是的,你理解错了。你可以通过命令行解释器来运行Python代码,也可以在Java中使用Python代码。以前还有一个Python转Java的编译器,但在Jython 2.2之后就不再更新了。