Domanda semplice. Perché "porting" su zmq su java e chiamarlo JeroMQ è una buona idea?Perché uno potrebbe aver bisogno di JeroMQ se può usare JZMQ?
6
A
risposta
14
JeroMQ è un progetto ufficiale della comunità ZeroMQ; è una porta completa della libreria libzmq C++, che supporta la versione 3.2.
Vantaggi:
- puro Java, quindi non è necessario collegare in C/C++ tramite JNI. Ciò è estremamente utile su dispositivi in cui le librerie native sono difficili o impossibili.
- 100% compatibile con l'API JZMQ (i due progetti concordano su una singola API in modo da poter importare uno o l'altro in modo trasparente).
- 100% compatibile con il protocollo del filo ZeroMQ, quindi è possibile eseguire alcuni nodi utilizzando JeroMQ e altri utilizzando la libreria nativa e funziona come previsto.
- Buona prestazione, relativamente vicino alla libreria nativa.
Svantaggi:
- No PGM multicast - non esiste una versione Java di quella libreria ancora.
- Non supporta ancora la funzionalità di ZeroMQ v4, inclusa la sicurezza.
3
JeroMQ è un'implementazione Java pura di ZeroMq. Se la lingua di destinazione è Java, è più semplice iniziare con JeroMq poiché utilizza un singolo file jar. ZeroMq (zmq), d'altra parte, è scritto in C. È necessario creare zmq, libzmq e il linguaggio Java binding, jzmq, per usarlo in un'app Java. L'API JeroMq è identica a jzmq, quindi iniziare con JeroMq e passare a jzmq in seguito non ha alcun impatto sull'applicazione con l'eccezione delle prestazioni; zmq ha prestazioni migliori di JeroMq.
Speranza che aiuta,
Problemi correlati
- 1. Perché dovrei aver bisogno di una conversione?
- 2. Perché abbiamo bisogno, quali vantaggi usare mangusta
- 3. std :: condition_variable perché ha bisogno di uno std :: mutex
- 4. Cursori Firebird - Perché dovresti usare uno
- 5. Perché questo benchmark JeroMQ (porta ZeroMQ) è lento?
- 6. Come verificare se la presa JZMQ è collegata
- 7. Perché C ha bisogno di matrici se ha puntatori?
- 8. 0MQ - Errore link insoddisfatto JZMQ
- 9. Posso usare thread.stop() in Java se davvero ne ho bisogno?
- 10. perché uno usare MACRO + 0 = 0
- 11. Perché abbiamo bisogno di WCF
- 12. Perché dovrei usare vagabondo se uso virtualenv?
- 13. Marshalling: cos'è e perché ne abbiamo bisogno?
- 14. Perché abbiamo bisogno di Control.Lens.Reified?
- 15. Perché abbiamo bisogno di scalaz.stream su iteratee?
- 16. Perché LinkedBlockingQueue # poll() potrebbe riagganciare?
- 17. Perché ho bisogno di interfaccia?
- 18. Perché il web ha bisogno di HTTP?
- 19. Perché ho bisogno di aggiungere artefatto JSR305 per usare Guava 14+?
- 20. Perché usare static se in D?
- 21. android.os.NetworkOnMainThreadException. Hai bisogno di usare un'attività asincrona?
- 22. perché abbiamo bisogno di zone_highmem su x86?
- 23. Perché dovresti aver bisogno di una barra alla fine di un URL?
- 24. ho bisogno di chiudere uno std :: fstream?
- 25. Perché hai "dove" quando c'è "aver"
- 26. Perché LsaAddAccountRights potrebbe restituire STATUS_INVALID_PARAMETER?
- 27. Delphi può usare solo un file .dll se necessario?
- 28. perché abbiamo bisogno di np.squeeze()?
- 29. Perché simulare HttpContext se può essere costruito?
- 30. Abbiamo sempre bisogno di usare una parola chiave asincrona?
Perché qualcuno voleva - presumibilmente per risolvere un problema. Chiedi loro il motivo (ad esempio vedi le FAQ/documentazione). Per quanto riguarda il nome, perché no? Porte e concorrenti vicini di solito seguono nomi "simili" per dimostrare che sono strettamente correlati. emacs/xemac, vim/gvim, NUnit/XUnit, Hibernate/nibernate ecc. – user2246674