我必须在只支持Java的服务器上部署一些Web服务,但其中一些将使用Perl或Python完成。我想知道是否有可能开发一个Java包装来调用用perl或python编写的特定代码。所以,我想要使用Java中的所有Web服务,但其中一些会使用其他语言调用一些代码。Java包装到Perl/Python代码
在此先感谢。 Regards, Ukrania
我必须在只支持Java的服务器上部署一些Web服务,但其中一些将使用Perl或Python完成。我想知道是否有可能开发一个Java包装来调用用perl或python编写的特定代码。所以,我想要使用Java中的所有Web服务,但其中一些会使用其他语言调用一些代码。Java包装到Perl/Python代码
在此先感谢。 Regards, Ukrania
这很大程度上取决于您的需求。如果Jython是Python代码的选项(它并不总是100%兼容),那么它可能是最好的选择。否则,您将需要使用Java的Process Builder直接调用解析器并将结果返回到其输出流。这不会很快(但是Jython的速度并不快,相对于普通的Java代码),但它是一个非常灵活的解决方案。
我必须完全支持python,我只是想以最简单的方式调用或使用其他程序员制作的代码。最后,我必须使用Web服务发布这些功能,这些功能需要在java上进行,因为WSO2仅支持Java Web服务(我使用WSO2来保证Web服务的安全)。 – 2009-07-29 17:44:34
我曾经使用过一段时间称为Jython,它允许您从Java执行Python代码。这有点古怪,但我得到它做我所需要的。
对于它的Python的一部分,你可以使用Jython来从您的Java虚拟机上运行Python代码。它将与您的Java代码完全集成,作为奖励。
我将准备好一个Python程序到最终版本,使用Jython它会调用已写入的函数或我需要重写代码? – 2009-07-29 17:30:37
是的,你应该可以调用现有的Python函数。 Jython几乎可以运行任何Python代码,但并不是所有的Python标准模块都可以在Jython中使用。我相信如果这些模块是用C编写的话,这很有可能。 – 2009-07-29 20:13:18
对于Python,您可以使用Java Scripting API。
一个Perl实现仍然遗漏。
对于Perl,请使用Inline::Java。有几种选择来整合代码;你可以call a separate process或者你可以使用embedded interpreter。
从perl/python脚本生成一个.class文件也是一个解决方案,因为我可以仅使用.class文件部署Web服务。 – 2009-07-29 17:32:30