我必須在只支持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