Newsletter sign-up
View all newsletters

Sign up for our technology specific newsletters.

Enterprise Java
Email Address:

The Jxta solution to P2P

Sun's new network computing platform establishes a base infrastructure for peer-to-peer application development

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Today's Internet is witnessing a revolution. A revolution that strives to change one of its basic features. A revolution where network endpoints -- or clients, such as desktop PCs, mobile phones, PDAs, and the like -- are demanding better network status. A revolution fueled by applications like Napster and Gnutella, applications that bring an end to a server-dominated Internet. A revolution hailed as P2P.

P2P (or peer-to-peer) networking is a network model where, depending on an operation's context, any node can operate as either a server or a client. P2P provides certain interesting capabilities not possible in traditional client/server networks, which have predefined client or server roles for their nodes.

In this article, I introduce you to P2P networking and compare it with client/server networking. I also introduce you to Jxta (pronounced jux-ta), a P2P computing platform pioneered by Bill Joy, Sun Microsystems' chief scientist and corporate executive officer; currently, Jxta is being molded by hundreds of open source developers. Jxta holds tremendous promise for the P2P world. It defines a set of protocols that developers can use to build almost any P2P application. At the same time, these protocols are flexible enough to be easily adapted to application-specific requirements. While Jxta does not dictate any particular programming language or environment, Java could potentially become the language of choice for P2P application development for obvious reasons: portability, ease of development, and a rich set of class libraries.

P2P: An overview

Today, the most common distributed computing model is the client/server model. Figure 1 depicts the typical client/server architecture.

Figure 1. The client/server model

In the client/server architecture, clients request services and servers provide those services. A variety of servers exist in today's Internet -- Web servers, mail servers, FTP servers, and so on. The client/server architecture is an example of a centralized architecture, where the whole network depends on central points, namely servers, to provide services. With no servers, the network would make no sense; without them, how would Web browsers work? Regardless of the number of browsers or clients, the network can exist only if a server exists.

Like the client/server architecture, P2P is also a distributed computing model, but there is an important difference. The P2P architecture is a decentralized architecture (see Figure 2), where neither client nor server status exists in a network. Every entity in the network, referred to as a peer, has equal status, meaning that an entity can either request a service (a client trait) or provide a service (a server trait). Figure 2 illustrates a P2P network.

Figure 2. The peer-to-peer model

Though peers all have equal status in the network, they don't all necessarily have equal physical capabilities. A P2P network might consist of peers with varying capabilities, from mobile devices to mainframes. A mobile peer might not be able to act as a server due to its intrinsic limitations, even though the network does not restrict it in any way.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comment
Login
Forgot your account info?
Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources