私には2つのオプションがあります - JNIを使用するか、Runtime.execを使用してC++ライブラリを実行できます。JNIとRuntime.exec()
C++プログラムはCPUを集中的に使用し、長時間実行されます。つまり、一部の呼び出しでは、返されるまでに数時間かかる場合があります。
それぞれの賛否両論は何ですか? 私はどのアプローチをとるべきですか?
私には2つのオプションがあります - JNIを使用するか、Runtime.execを使用してC++ライブラリを実行できます。JNIとRuntime.exec()
C++プログラムはCPUを集中的に使用し、長時間実行されます。つまり、一部の呼び出しでは、返されるまでに数時間かかる場合があります。
それぞれの賛否両論は何ですか? 私はどのアプローチをとるべきですか?
C++ライブラリと対話する必要がある場合は、JNIを使用してください。
単なる起動したい(そしておそらく出力を取りたい)スタンドアロンプログラムの場合は、Runtime.exec()
ははるかに簡単です。
JNAを3番目のオプションとして調べましたか? JNAサイトから
:
JNAが Javaコード-noがJNIまたはネイティブコードが を必要としないが、何も記述せずにJavaプログラムにネイティブ共有ライブラリ( Windows上のDLL)に簡単にアクセス を提供します。この機能はWindowsのプラットフォーム/呼び出し とPythonのctypeに匹敵する です。実行時にコード生成を行わずにアクセスできるのは、動的な です。
紹介については、getting startedのガイドをご覧ください。
JNIを使用すると、32ビットから64ビットへの移動が制限される場合があります。また、アプリケーションのメモリ設定も調整しなければならない場合があります。
C++の内容がどれだけうまく書かれているか分からない限り、アプリをより不安定にする可能性があります。あなたはC++のビットが数時間かかるという点で幸運です。だから外部に呼び出すだけです。
こんにちはマイケル、もっと情報を提案してください。使用される速度とメモリへの影響についてまた、アプリケーションの安定性への影響はどうでしょうか。 – saurabheights