2009-04-23 10 views
2

私には2つのオプションがあります - JNIを使​​用するか、Runtime.execを使用してC++ライブラリを実行できます。JNIとRuntime.exec()

C++プログラムはCPUを集中的に使用し、長時間実行されます。つまり、一部の呼び出しでは、返されるまでに数時間かかる場合があります。

それぞれの賛否両論は何ですか? 私はどのアプローチをとるべきですか?

答えて

5

C++ライブラリと対話する必要がある場合は、JNIを使​​用してください。

単なる起動したい(そしておそらく出力を取りたい)スタンドアロンプ​​ログラムの場合は、Runtime.exec()ははるかに簡単です。

+0

こんにちはマイケル、もっと情報を提案してください。使用される速度とメモリへの影響についてまた、アプリケーションの安定性への影響はどうでしょうか。 – saurabheights

2

JNAを3番目のオプションとして調べましたか? JNAサイトから

JNAが Javaコード-noがJNIまたはネイティブコードが を必要としないが、何も記述せずにJavaプログラムにネイティブ共有ライブラリ( Windows上のDLL)に簡単にアクセス を提供します。この機能はWindowsのプラットフォーム/呼び出し とPythonのctypeに匹敵する です。実行時にコード生成を行わずにアクセスできるのは、動的な です。

紹介については、getting startedのガイドをご覧ください。

+0

ありがとう、JNAについて聞いていなかった。 +1 – dogbane

+0

リンクが壊れているようです – kongo09

+0

@ kongo09私はリンクを更新しました。 –

0

JNIを使​​用すると、32ビットから64ビットへの移動が制限される場合があります。また、アプリケーションのメモリ設定も調整しなければならない場合があります。

C++の内容がどれだけうまく書かれているか分からない限り、アプリをより不安定にする可能性があります。あなたはC++のビットが数時間かかるという点で幸運です。だから外部に呼び出すだけです。