簡體   English   中英

了解zeromq java綁定

[英]Understanding zeromq java binding

我正在調查zeromq作為java項目中的消息傳遞解決方案,但我發現有關java綁定的說明有點難以理解。 http://www.zeromq.org/bindings:java

我不熟悉java綁定,所以這些可能是愚蠢的問題,但有人可以幫助我理解:

  1. 為什么我需要安裝任何東西?
  2. 我在一台機器上構建的罐子可以在另一個系統上運行嗎? 我需要這個應用程序是可移植的。
  3. 如果是這樣,為什么我要開始建立自己的罐子?

我覺得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)

我在一台機器上構建的罐子可以在另一個系統上運行嗎? 我需要這個應用程序是可移植的。

是。 罐子是便攜式的。 您可以在任何計算機上構建它並將其部署在任何其他計算機上。 不過這很容易。 困難的部分是創建所需的各種DLL,這些DLL不可移植。 假設你想支持Windows,Mac和Fedora Linux。 您將需要Windows,Mac和Fedora上的本機開發環境,並為您要支持的每個平台構建DLL。

我對Linux的了解不足以說明構建在一個發行版(比如Fedora)上的DLL是否會在另一個發行版上運行(比如說Debian)。 如果沒有,那么你還有更多的工作要做。

無論如何,您的應用程序將是可移植的 - ZeroMQ和JZMQ可以在大量平台上運行 - 但您需要嚴格控制部署過程,以確保在安裝每個平台時,jar和適當的DLL集合都是已安裝,並且它們安裝在正確的位置。

為什么我需要安裝任何東西?

從技術上講,你沒有。 但我認為他們建議執行make install步驟,以便include和庫文件是編譯器所期望的位置,以便Java可以在運行程序時加載它們。

如果是這樣,為什么我要開始建立自己的罐子?

我不是提交者所以我不能肯定地說。 我希望它的一部分是開發人員效率 - 他們寧願改進代碼而不是為可以自己創建jar的用戶創建jar。

更重要的是 - 由於罐子不夠而且你必須構建DLL,所以將jar和DLL組合起來更有意義。 這樣您就可以確定JNI包裝器具有在C中實現的正確本機方法,以匹配Java包裝器類中的本機聲明。

祝好運。 希望這可以幫助。

就個人而言,我確實認為預先制作的JAR可以在很大程度上幫助java中的0MQ。 雖然我在許多站點使用Java工作,但他們不提供MSVS並且必須經歷如此冗長的設置才能得到一個dll和jar似乎對我有效。

您還可以查看JeroMQlibzmq的純Java實現)。

JeroMQ是一個完整的Java堆棧,它使用與ZeroMQ相同的協議和API,是社區的官方項目。 它使Java用戶的生活變得更加簡單,因為沒有JNI,沒有C ++可以構建。 除了PGM組播之外,它還能完成ZeroMQ所做的一切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM