フランキーどういうわけか、JVM内からPythonを直接実行するには、が動作しません。それらは互換性がありません(サードパーティ製ライブラリの新しいリリースではPython 2.6の機能を使用でき、Jython 2.5では動作しません)、またはハッキー(潜在的な解決策には至っていない隠されたJVMスタックトレースで破損します)。
2つを統合する私の好ましい方法は、RPCを使用します。適度な量のデータがある場合は、XML RPCはここで悪い選択ではありません。それはかなりうまくサポートされています— Pythonは標準ライブラリにあります。 Javaライブラリも簡単に見つかります。あなたの設定に応じて、JavaまたはPythonの部分は、他の言語からの接続を受け入れるサーバーになります。
あまり一般的ではありませんが、RPCを行う代替方法を考える価値は、nice rpcの2/3のGoogleプロトパックです。あなたはトランスポート層を提供するだけです。それほど多くの仕事や執筆の利便性は合理的ではありません。
もう1つの選択肢は、Javaに公開してJVMのネイティブプラグインを介して使用する必要があるPython機能の部分をCラッパーで記述することです。あなたはSWIG SWIGに行くことで痛みを緩和することができます。
は基本的に、あなたのケースでは、そのように動作します:
- C++へのJavaからのすべてのメソッド呼び出しのためのSWIGインタフェースを作成します。
- あなたの呼び出しを受け取り、内部的に正しいパラメータでPythonインタプリタを呼び出すC/C++コードを作成します。
- pythonから得た応答を変換し、swig経由でJavaコードに送り返します。
このソリューションはかなり複雑で、ほとんどの場合過剰です。あなたが(何らかの理由で)RPCを買う余裕がない場合でも、それは価値があります。 RPCは私の好みの選択肢です。
Pythonライブラリがすべて純粋なPythonで書かれている場合、Jythonを使うのはどうですか? – fabrizioM