ZeroMQのJavaバインディングの仲間のユーザーとして、私は共感します。 ZeroMQは間違いなくJavaの依存関係を管理することの1つです。心の中では、ZeroMQはネイティブのCコードであり、Javaバインディングは、コアZeroMQライブラリに対するJNIインターフェイスを中心とした(比較的)軽量のラッパーです。このため、展開が複雑です。
脇に - ZeroMQがあなたのアプリケーションに適しているなら、それは本当にそれに似ていることがないので、問題があります。残念ながら、これは、実際に必要なものかどうかを判断できるように、これらのすべての手順を実行する必要があることを意味します。
Java用ZeroMQは、3つのコンポーネントに基づいている:
- libzmq - コアZeroMQライブラリ(DLL - 任意の言語だけでなく、Javaのために必要)
- jzmq - のJavaのネイティブ部分の結合( DLL)
- zeromq.jar - Javaバインディング(JARのjavaの部分)
jarが、私は別のシステム上の1つの機械作業の上に構築さでしょうか?私はこのアプリケーションをポータブルにする必要があります。
はい。瓶は移植可能です。任意のマシン上に構築し、他のマシンに展開することができます。しかし、それは簡単な部分です。難しい部分は、必要とされ、移植可能ではないさまざまなDLLを作成することです。 Windows、Mac、Fedora Linuxをサポートしたいとしましょう。 Windows、Mac、Fedoraのネイティブ開発環境が必要で、サポートしたいプラットフォームごとにDLLを構築してください。
1つのディストリビューション(Fedoraなど)でビルドされたDLLが別のディストリビューション(Debianなど)で動作するかどうかについては、Linuxについて十分に分かりません。もしそうでなければ、より多くの仕事があります。
あなたのアプリケーションはポータブルになります - ZeroMQとJZMQは膨大な数のプラットフォーム上で実行できますが、各プラットフォームをインストールするときには、jarと適切な一連のDLLがインストールされ、適切な場所にインストールされます。
何故私は何かをインストールする必要がありますか?
技術的にはありません。しかし、私は彼らがmake install
ステップを実行することを推奨していると思います。そうすれば、インクルードファイルとライブラリファイルはコンパイラが期待するところにあり、プログラム実行時にJavaがロードできるようになります。
もしそうなら、私はなぜ自分のjarファイルをビルドする必要がありますか?
私はコミッタではないので、私は確かに言えません。開発者の効率性の一部は期待しています。ジャーを自分で作成できるユーザー用のjarファイルを作成するよりも、コードを改善することになります。
さらに重要なのは、jarファイルでは十分ではなく、DLLを作成する必要があるため、JarファイルとDLLファイルを一緒にビルドする方が理にかなっています。こうすることで、JNIラッパーはJavaラッパークラスのネイティブ宣言と一致するようにCで実装された正しいネイティブメソッドを正確に持つことになります。
幸運。お役に立てれば。
ありがとう、グイド。それははるかに明確になります! –
または、問題を省略し、zeromqのプレーンなJavaポートである[jeromq](https://github.com/zeromq/jeromq)を使用することができます。状況によってはバインディングよりも高速です(https://github.com/zeromq/jeromq/wiki/Perfomance)。 – drzymala