2012-10-24 9 views
19

私はjavaプロジェクトでメッセージを渡すソリューションとしてzeromqを調べていますが、私はJavaのバインディングに関する指示がやや難しいと感じています。 http://www.zeromq.org/bindings:javazeromqのJavaバインディングを理解する

私はJavaバインディングに不慣れだので、これらは愚かな質問かもしれないが、誰かが私を理解するのに役立ちます:

  1. は、なぜ私は何もインストールする必要がありますか?
  2. jar私は別のシステム上の1つのマシンで動作しますか?私はこのアプリケーションをポータブルにする必要があります。
  3. もしそうなら、なぜ自分のjarファイルをビルドする必要がありますか?

zeromqに与えられた命令は、私が欠けている建物のCプロジェクトと基本知識が必要ような気がするので、多分私はちょうど、緻密されるのですが、これは多くの作業のように思えます。

答えて

25

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で実装された正しいネイティブメソッドを正確に持つことになります。

幸運。お役に立てれば。

+0

ありがとう、グイド。それははるかに明確になります! –

+5

または、問題を省略し、zeromqのプレーンなJavaポートである[jeromq](https://github.com/zeromq/jeromq)を使用することができます。状況によってはバインディングよりも高速です(https://github.com/zeromq/jeromq/wiki/Perfomance)。 – drzymala

1

個人的には、あらかじめ作成されたJARがJavaの0MQを助けるために長い道のりを行くと思います。私は多くのサイトでJavaで作業していますが、MSVSを提供していないため、dllを取得するためにこのような長いセットアップを行う必要があります。

0

JeroMQ(純正Java実装のlibzmq)もご覧ください。

JeroMQは、ZeroMQと同じプロトコルとAPIを使用する完全なJavaスタックであり、コミュニティの公式プロジェクトです。ビルドするJNIやC++がないので、Javaユーザーにとってはより簡単になります。 ZeroMQはPGMマルチキャストを除いてすべて機能します。

関連する問題