Zrozumienie wiązania zeromq java

Badam zeromq jako rozwiązanie przekazywania wiadomości w projekcie java, ale instrukcje dotyczące wiązania Javy są dla mnie nieco trudne do naśladowania. http://www.zeromq.org/bindings:java

Nie znam się na wiązaniach Javy, więc mogą to być głupie pytania, ale czy ktoś może mi pomóc zrozumieć:

  1. Dlaczego muszę cokolwiek instalować?
  2. czy słoiki, które zbuduję na jednej maszynie, będą działać na innym systemie? Ta aplikacja musi być przenośna.
  3. Jeśli tak, dlaczego na początek muszę budować własne słoiki?

Wydaje mi się, że instrukcje zawarte na zeromq wymagają podstawowej znajomości projektów budowlanych C, których mi brakuje, więc może jestem po prostu gęsty, ale to wygląda na dużo pracy.

Author: Alex Pritchard, 2012-10-24

3 answers

Jako kolega użytkownika wiązania Javy ZeroMQ, współczuję. ZeroMQ jest zdecydowanie jedną z trudniejszych zależności Javy do zarządzania. W swoim sercu ZeroMQ jest natywnym kodem C, a Wiązanie Javy jest (stosunkowo) lekkim opakowaniem wokół interfejsu JNI do podstawowej biblioteki ZeroMQ i dlatego jest złożone do wdrożenia.

Na marginesie-jeśli ZeroMQ jest dobrym dopasowaniem do Twojej aplikacji, jest to warte zachodu, ponieważ naprawdę nie ma nic podobnego. Niestety oznacza to, że musisz przejść przez wszystkie te kroki, aby go uruchomić, więc możesz zdecydować, czy jest to, czego naprawdę potrzebujesz.

ZeroMQ dla Javy opiera się na trzech komponentach:

  • libzmq - podstawowa biblioteka ZeroMQ (DLL - wymagana dla dowolnego języka, nie tylko Javy)
  • jzmq-natywna część wiązania Javy (DLL)
  • zeromq.jar - część Javy wiązania Javy (JAR)

Czy słoiki, które zbuduję na jednej maszynie, będą działać na innym systemie? Ta aplikacja musi być przenośna.

Tak. Słoik będzie przenośny. Możesz go zbudować na dowolnym komputerze i wdrożyć na dowolnym innym. Jednak to jest łatwa część. Trudną częścią jest tworzenie różnych bibliotek DLL, które są wymagane, a te nie są przenośne. Załóżmy, że chcesz obsługiwać systemy Windows, Mac i Fedora Linux. Będziesz potrzebował natywnych środowisk programistycznych w systemach Windows, Mac i Fedora i zbudujesz biblioteki DLL dla każdej platformy, którą chcesz obsługiwać.

I don ' t know enough o Linuksie powiedzieć, czy DLL zbudowany na jednej dystrybucji (powiedzmy Fedora) będzie działał na innej (powiedzmy Debian). Jeśli nie, to masz przed sobą więcej pracy.

Tak czy inaczej, twoja aplikacja będzie przenośna - ZeroMQ i JZMQ mogą działać na ogromnej liczbie platform - ale musisz mieć ścisłą kontrolę nad procesem wdrażania, aby upewnić się, że po zainstalowaniu każdej platformy, jar i odpowiedni zestaw bibliotek DLL są zainstalowane we właściwym miejscu.

Dlaczego Muszę coś zainstalować?

Technicznie nie. ale myślę, że zalecają wykonanie kroku make install, aby pliki include i library były tam, gdzie oczekują ich kompilatorzy, a także aby Java mogła je załadować, gdy nadejdzie czas uruchomienia programu.

Jeśli tak, to po co budować własne słoiki?

Nie jestem committerem, więc nie mogę powiedzieć na pewno. Spodziewam się, że część z nich to wydajność programistów-woleliby ulepszać Kod niż tworzenie słoików dla użytkowników, którzy sami mogliby je tworzyć.

Co ważniejsze - ponieważ słoiki nie wystarczą i tak musisz budować biblioteki DLL, bardziej sensowne jest budowanie słoików i bibliotek DLL razem. W ten sposób masz pewność, że wrapper JNI ma dokładnie odpowiednie natywne metody zaimplementowane w C, aby pasowały do natywnych deklaracji w klasie wrapper Java.

Powodzenia. Mam nadzieję, że to pomoże.
 26
Author: Guido Simone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-24 16:40:42

Osobiście uważam, że gotowe słoiki bardzo pomogłyby 0MQ w Javie. Podczas gdy pracuję w Javie na wielu stronach, nie dostarczają one MSV i konieczność przechodzenia przez tak długą konfigurację tylko po to, aby uzyskać dll i jar wydaje mi się przeciwna do produktywności.

 1
Author: user4737857,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-01 10:55:32

Możesz również spojrzeć na JeroMQ (Czysta Java implementacja libzmq).

JeroMQ jest pełnym stosem Java, który używa tego samego protokołu i API ZeroMQ i jest oficjalnym projektem społeczności. To sprawia, że życie jest o wiele prostsze dla użytkowników Javy, ponieważ nie ma JNI, nie ma C++ do zbudowania. Robi wszystko co ZeroMQ poza PGM multicast.

 1
Author: Pritesh Mhatre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 19:27:33