Distributed object technologies like RMI, CORBA, DCOM, and
SOAP assume a client\server architecture.
That is, applications written for them usually assume:
Servers are well-known, always available, faster.
Clients only want to communicate with servers.
Clients are slower, less powerful, more likely to be
residing in a workstation.
P2P applications such as distributed.net [2] and the
many file-sharing systems have shown that this is not
enough.
JXTA ("juxta") was designed to enable the implementation of
sophisticated P2P application. That is, beyond
file-sharing.
It was started as a SUN project, headed by Bill Joy, but
then became open source. You can learn more by visiting the JXTA homepage [3].
2 Objectives
Interoperability: Enable peers to easily find and
communicate with each other, participating in community
activities. It enables many different activities.
Platform independence: It will be independent of
programming language, platform, or networking technology.
Ubiquity: It is designed to be implemented on every
device, from PDA to mainframes.
3 Architecture
The core deals with peer establishment and communication
management.
The middle handles services such as indexing, searching, and
file sharing.
4 JXTA Concepts
Each peer is given a 128-bit unique identifier (UUID). These
are not guaranteed to be globally unique.
Advertisements are XML documents that describe the
existence of peers, peer groups, pipes, or services.
A peer is an entity that can understand all the
required protocols.
Messages are the basic unit of communication. They
should operate on asynchronous, unreliable, uni-directional
transport. Messages contain an envelope and a body.
A peer group is a virtual entity that speaks the set
of peer group protocols. There are no membership
requirements. The World Peer Group includes everyone.
Pipes are communication channels for sending and
receiving messages. They are unidirectional and
asynchronous. Their endpoints can be moved among peers.
A point-to-point pipe connects exactly two peers,
sender and receiver.
A propagate pipe connects multiple peer endpoints
together.
5 Protocols
Peer Discovery: Enables peers to find advertisements
on other peers and can be used to find any of the peer, peer
groups, or advertisements.
Peer Resolver: Enables a peer to send and receive
generic search queries.
Peer Information: Allows a peer to learn about the
capabilities and status of other peers.
Peer Membership: Allows a peer to get membership
requirements, and to apply for, update, or cancel
memberships.
Pipe Binding: Allows a peer to bind a pipe
advertisement to a pipe endpoint, thus indicating where messages
actually go over the pipe.
Endpoint routing: Allows a peer to ask a peer router
for available routes for sending a message to a destination
peer.
6 Discovery Mechanisms
There are many possibilities.
LAN-based discovery uses broadcast on the subnet.
A peer could receive an invitation that tells him about some
other peer.
A peer can ask another peer it has discovered about the
peers it knows about.
A rendezvous peer can act as a source of information about
peers.
7 Security
The 1.0 version provides some minimal security tools.
A simple crypto library with hash, symmetric (RC4), and
asymmetric (RSA) algorithms.
An authentications framework modeled after PAM.
A password-based login scheme, to be used with above.
An access-control mechanism based on peer groups. Members
share everything.
A transport mechanism bases on SSL/TLS.
8 Getting Started
JXTA is still being developed.
There are many interesting developments around it (e.g., the
Poblano distributed trust model).