2

Java/Scala バックエンドがあり、そのためのミドルウェアを Python で開発したいとしましょう。私はミドルウェアを開発した経験はありませんが、Python 内から、実行中の Java/Scala バックエンド プログラムにコマンドを発行し、そのバックエンドからフィードバックを受け取る必要があることを意味していると思います。これを行うには、2 つの言語をインターフェースする必要があり、Python と Java をインターフェースするためのオプションがいくつかあります。これらの ページによると、いくつかのオプションがあります。

  • JPI
  • JNI
  • JPype
  • ジェップ
  • ジソン
  • JCC

残念ながら、JPI、JNI、JPype、および Jepp は、もはや積極的に開発されていないようです (最後の更新は 1 年以上前です)。Jython はまだアクティブですが、Jython 内からすべての Python モジュールをインポートすることはできないと読みました。JCC は、Java と Python の間のある種の C++ レイヤーのように見えますが、これも直観に反するようです。

私はまた、このトピックに関するSOに関するいくつかの質問を見つけまし たが、ほとんどは3年以上前のようで、インターネット/ Pythonの世界ではもちろん長い間です。

ZeroMQ メッセージング ライブラリの経験があるので、それを使用できますが、Java プログラムを調整する必要があります (それほど大きな問題にはなりませんが、より良い解決策があれば..) .

私の質問は、Java/Scala バックエンドを制御できることを考慮して、現在、そのバックエンド用の Python ミドルウェア レイヤーを作成する最良の方法は何ですか?

4

1 に答える 1

1

あなたがやろうとしていることについて多くの詳細を与えていません。ミドルウェアが別のプロセスで実行される場合、ミドルウェアが互いに通信できる限り、ミドルウェアがどの言語で記述されているかはおそらく大きな違いはありません。提案したように、ZMQ でそれを行うことができます。

Python で記述したいレイヤから Java/Scala ライブラリを呼び出しているだけなら、Jython を使用します。「すべてのモジュールをロードできない」という問題は、利用できないモジュールの一部を使用する予定がある場合にのみ発生します。利用できないモジュールであっても、呼び出すことができる適切な Java 代替モジュールを見つけることができるはずです。

最後に、本当に Python と Java の間で直接インターフェイスを取りたい場合は、Babelを調べることができます。私は、C、Java、および Python プログラムとのインターフェースにそれを使用して成功した人を何人か知っています。

于 2013-07-25T07:11:16.937 に答える