JXTA

I have been knowing JXTA since 2 years ago while I was studying P2P networks at AIT. At that time, I couldn't allocate my time to go through it. At present I need to work on it and, therefore, I spent my whole week on JXTA and played with the sample applications which use JXTA. Just few minutes ago, I took a quiz from Sun Microsystem's website. My score was more than 80 %. This indicates that my knowledge on JXTA is not so bad :). In this essay, I will focus the need of JXTA and discuss some of its features.

Traditional server client based applications have limitations. They can not serve to a large number of users. They are also vulnerable as they have a single point of failure, the server. P2P network can solve such limitations. Napster was the first P2P application in the internet which provided a P2P solution to share music files among peers. Although it was very popular, it had to shut down shortly after its lunch because of copyright infringement. However, it paved the way for P2P applications. Consequently, we can find very famous P2P applications e.g. skype in the current Internet.

Because of the key properties of P2P protocols many applications try to use the concepts. The concepts used by an application do not match with the concepts used by other application even if they provide the same features. For example, messages which are used to communicate among peers for yahoo chat application have completely different formats than those of MSN messenger. Some solution was needed to handle such issues. JXTA came up with the idea.

JXTA, also known as Juxtapose, is an open source peer-to-peer (P2P) protocol specification. The specification is prepared by Sun Microsystems in 2001. Remember that JXTA is specification. Thus it is platform independent. Its implementations can be found for Java, C, C++, C#.

Interesting feature of JXTA is that it can communicate with any peer or resource that are behing firewalls and NATs or use different transports. It forms an overlay network of peers. Each peer is identified by a unique ID, hash value of a URN ( ::= "urn:" ":" e.g. urn:ietf:rfc:2648, urn:isbn:0451450523). It means that peer can change the networks while keeping a constant identifier number.

As mentioned earlier, JXTA provides specification for building P2P networks. There are six protocols: Peer Resolver Protocol; Peer Information Protocol; Rendezvous Protocol; Peer Membership Protocol; Pipe Binding Protocol; Endpoint Routing Protocol. Furthermore, JXTA has two types of peers: Edge peers and Super Peers (Rendezvous Peer and Relay Peer). One peer can handle the role of all three peers. Super peer needs high resources like memory, and processing capacity. Furthermore, JXTA uses XML to send its messages. Pipes are used to communicate between two overlay peers.

References:
  1. Free JXTA Book
  2. Wikipedia
  3. JXTA Overview
  4. JXTA official site