了解zeromq java绑定

我正在调查zeromq作为java项目中的消息传递解决方案,但我发现有关java绑定的说明有点难以理解。 http://www.zeromq.org/bindings:java

我不熟悉java绑定,所以这些可能是愚蠢的问题,但有人可以帮助我理解:

  1. 为什么我需要安装任何东西?
  2. 我在一台机器上构建的jar子可以在另一个系统上运行吗? 我需要这个应用程序是可移植的。
  3. 如果是这样,为什么我要开始建立自己的jar子?

我觉得zeromq上提供的说明需要熟悉构建我缺乏的C项目,所以也许我只是在密集,但这似乎很多工作。

作为ZeroMQ Java绑定的同伴,我表示同情。 ZeroMQ绝对是要管理的更具挑战性的Java依赖项之一。 在它的核心,ZeroMQ是本机C代码,Java绑定是围绕到核心ZeroMQ库的JNI接口的(相对)轻量级包装,这就是部署复杂的原因。

顺便说一句 – 如果ZeroMQ非常适合您的应用程序,那么它非常值得一试,因为它确实没有什么比这更好的了。 不幸的是,这意味着您需要完成所有这些步骤以使其正常工作,以便您可以决定它是否是您真正需要的。

ZeroMQ for Java基于三个组件:

  • libzmq – 核心ZeroMQ库(DLL – 任何语言都需要,而不仅仅是Java)
  • jzmq – Java绑定的本机部分(DLL)
  • zeromq.jar – Java绑定的Java部分(JAR)

我在一台机器上构建的jar子可以在另一个系统上运行吗? 我需要这个应用程序是可移植的。

是。 jar子是便携式的。 您可以在任何计算机上构建它并将其部署在任何其他计算机上。 不过这很容易。 困难的部分是创建所需的各种DLL,这些DLL不可移植。 假设你想支持Windows,Mac和Fedora Linux。 您将需要Windows,Mac和Fedora上的本机开发环境,并为您要支持的每个平台构建DLL。

我对Linux的了解不足以说明构建在一个发行版上的DLL(比如Fedora)是否会在另一个发行版上运行(比如说Debian)。 如果没有,那么你还有更多的工作要做。

无论如何,您的应用程序将是可移植的 – ZeroMQ和JZMQ可以在大量平台上运行 – 但您需要严格控制部署过程,以确保在安装每个平台时,jar和适当的DLL集合是已安装,并且它们安装在正确的位置。

为什么我需要安装任何东西?

从技术上讲,你没有。 但我认为他们建议执行make install步骤,以便include和库文件是编译器所期望的位置,以便Java可以在运行程序时加载它们。

如果是这样,为什么我要开始建立自己的jar子?

我不是提交者所以我不能肯定地说。 我希望它的一部分是开发人员效率 – 他们宁愿改进代码而不是为可以自己创建jar的用户创建jar。

更重要的是 – 由于jar不够,你必须构建DLL,所以将jar和DLL组合在一起更有意义。 这样您就可以确定JNI包装器具有在C中实现的正确本机方法,以匹配Java包装器类中的本机声明。

祝你好运。 希望这可以帮助。

就个人而言,我确实认为预先制作的JAR可以帮助java中的0MQ。 虽然我在许多网站上使用Java工作,但他们不提供MSVS并且必须经历如此漫长的设置才能得到一个dll和jar似乎对我有效。

您还可以查看JeroMQ ( libzmq的纯Java实现)。

JeroMQ是一个完整的Java堆栈,它使用与ZeroMQ相同的协议和API,是社区的官方项目。 它使Java用户的生活变得更加简单,因为没有JNI,没有C ++可以构建。 除了PGM多播之外,它还能完成ZeroMQ所做的一切。