Подтвердить что ты не робот

Понимание привязки Java-привязки zeromq

Я изучаю zeromq как решение для передачи сообщений в проекте java, но я нахожу, что инструкции по привязке к java несколько сложно выполнить. http://www.zeromq.org/bindings:java

Я не знаком с привязками java, так что это могут быть глупые вопросы, но может кто-то помочь мне понять:

  • Зачем мне что-то устанавливать?
  • Будут ли банки работать на одной машине на другой системе? Мне нужно, чтобы это приложение было переносимым.
  • Если да, зачем мне сначала создавать свои собственные банки?

Я чувствую, что инструкции, представленные на zeromq, требуют базового знакомства с проектами C, которые мне не хватает, поэтому, возможно, я просто плотен, но это кажется большой работой.

4b9b3361

Ответ 1

Как один из пользователей Java-привязки ZeroMQ, я сочувствую. ZeroMQ определенно является одной из наиболее сложных Java-зависимостей для управления. В этом сердце Сервера ZeroMQ является родным C-кодом, а привязка Java является (относительно) облегченной оболочкой вокруг интерфейса JNI к основной библиотеке ZeroMQ, и поэтому ее сложно развернуть.

В стороне - если ZeroMQ - хорошее совпадение для вашего приложения, это стоит того, потому что действительно нет ничего подобного. К сожалению, это означает, что вам нужно пройти все эти шаги, чтобы заставить его работать, чтобы вы могли решить, действительно ли это то, что вам действительно нужно.

ZeroMQ для Java основан на трех компонентах:

  • libzmq - основная библиотека ZeroMQ (DLL - требуется для любого языка, а не только для Java)
  • jzmq - родная часть связывания Java (DLL)
  • zeromq.jar - часть java привязки Java (JAR)

Будут ли банки работать на одной машине на другой системе? Мне нужно, чтобы это приложение было переносимым.

Да. Банка будет переносной. Вы можете построить его на любой машине и развернуть на любом другом. Однако это легкая часть. Жесткая часть - это создание различных требуемых DLL, и они не переносимы. Скажем, вы хотите поддерживать Windows, Mac и Fedora Linux. Вам понадобятся собственные среды разработки в Windows, Mac и Fedora и постройте библиотеки DLL для каждой платформы, которую вы хотите поддерживать.

Я не знаю достаточно о Linux, чтобы сказать, будет ли DLL, построенная на одном дистрибутиве (скажем, Fedora), работать на другом (скажем, Debian). Если нет, то у вас впереди еще больше работы.

Во всяком случае, ваше приложение будет переносимым - ZeroMQ и JZMQ могут работать на огромном количестве платформ, но вам нужно будет жестко контролировать процесс развертывания, чтобы убедиться, что при установке каждой платформы, банке и соответствующем наборе DLL установлены, и они установлены в нужном месте.

Зачем мне что-то устанавливать?

Технически вы этого не делаете. Но я думаю, что они рекомендуют делать шаг make install, чтобы файлы include и library были там, где их компиляторы ожидают, а также чтобы Java могла загружать их, когда пришло время запуска вашей программы.

Если да, зачем мне сначала создавать свои собственные банки?

Я не коммиттер, поэтому не могу сказать точно. Я ожидаю, что часть этого будет эффективностью разработчиков - они скорее улучшат код, чем создают банки для пользователей, которые могли бы создавать сами банки.

Что еще более важно - поскольку банок недостаточно, и вы все равно должны создавать библиотеки DLL, имеет смысл строить банки и библиотеки DLL вместе. Таким образом, вы уверены, что обертка JNI имеет правильные собственные методы, реализованные в C, чтобы сопоставить собственные объявления в классе оболочки Java.

Удачи. Надеюсь, это поможет.

Ответ 2

Лично я думаю, что готовые JAR файлы могли бы помочь в 0MQ в java. Хотя я работаю на Java на многих сайтах, они не предоставляют MSVS и должны пройти такую ​​длинную настройку, чтобы получить dll и jar, кажется мне продуктивным.

Ответ 3

Вы также можете посмотреть JeroMQ (Чистая реализация Java libzmq).

JeroMQ - это полный стек Java, который использует тот же протокол и API ZeroMQ и является официальным проектом сообщества. Это делает жизнь намного проще для пользователей Java, поскольку нет JNI, не С++ для сборки. Он делает все ZeroMQ, кроме многоадресной рассылки PGM.