Parent Category: Weblog
Hits: 9583

Mule vs. JXTA - A General Comparison

After reading the title of this article, you might be saying to yourself, "Mule is an ESB and JXTA is a P2P platform.  Apples vs. Oranges"  Yes, both technologies are quite different and intended to solve different issues, but both can be used to solve many of the same issues each other has been designed to take care of.  Network applications are all over it seems yet their use is still increasing in popularity.  This presentation aims to highlight the pros and cons of using JXTA or Mule and contrast them to determine what is the best solution for a distributed network application.  This article aims to highlight the differences and similarities and to gain a better understanding of both.  This article also aims to open a discussion about the idea of Mule (or any ESB) supporting a technology like JXTA to gain its advantages if they are deemed beneficial.

First off, why Mule?  Why not ServiceMix or another ESB?  I chose Mule just because externally Mule and SeviceMix appear to be the same[1] but if ServiceMix does something that Mule cannot do in the scope of this comparison, I encourage anyone to kindly post a reply.

Both Mule and JXTA have overlapping features such as providing a platform to abstract the network from the application, providing communication and services to a group of authorized peers over secure channels and the ability to emulate various network topologies:  p2p, client/server, service buses.  So how are they different?  The most obvious difference is that Mule is a "high-level" technology designed for quick implementation to solve many distributed application problems like having two legacy applications communicate with each other in different data formats or protocols.  JXTA, in comparison, is a "low-level" platform providing a set of its own networking protocols that the developer must implement in concert to communicate to its remote peers.  As you might expect, JXTA has a higher learning curve and has more parts to manage than Mule does, but as you also might expect, JXTA provides finer and more custom control over the network semantics and can reach peers through more firewall and nat configurations than Mule

JXTA is an open source peer-to-peer protocol used to send text/binary messages or streams over unreliable disparate networks to peers belonging to specific groups.  Strictly speaking, JXTA is a set of open xml-based protocols used to create logical networks on top of physical networks.

Mule is an Enterprise Service Bus used to send text/binary/POJOs to one or many endpoints on unreliable disparate networks.

 JXTA – Pros


 JXTA – Cons


 Mule – Pros


Mule – Cons


Both have in common:


In a distributed network application, it is necessary to be as independent of client side firewall rules as much as possible.  This is where the 2 technologies differ somewhat.  JXTA can work from behind a very restrictive firewall; the bare minimum would have to at least allow out-bound port 80 but can block all in-coming.  Mule sometimes needs to expose in-coming ports on both client and server side.  If you are distributing your network application  on an internal or private network where you, the developer, has control over the firewall & NAT rules, then Mule would be a good choice, but if your applications will be distributed behind multiple unknown firewall & NAT configurations, then JXTA would be a better choice.