Instant messaging, either local within an Intranet, wide-area inside an enterprise, or global over the Internet, is quickly becoming a 'killer application' for P2P technology. Unfortunately, most P2P networks existing today either have a proprietary development system, or complex open source APIs and operation models that take weeks or even months to understand. If only there were a way to get on-board the P2P train quickly, and absorb the intricate lower-level details at one's own pace. This article introduces a one-afternoon solution to writing an instant messaging application based on the JXTA network.
|Published (Last):||4 August 2018|
|PDF File Size:||8.38 Mb|
|ePub File Size:||3.70 Mb|
|Price:||Free* [*Free Regsitration Required]|
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. 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.
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. 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. 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. Both networking models feature advantages and disadvantages.
As each client is added, the central point weakens; its failure can destroy the whole network. A P2P network delivers a quite different scenario. Since every entity or peer in the network is an active participant, each peer contributes certain resources to the network, such as storage space and CPU cycles. As more and more peers join the network, the network's capability increases.
Hence, as the network grows, it strengthens. The P2P network is unavailable only when no peers are active. You pay the price for the advantages a P2P network offers, however. Therefore, the enforcement of security policies, backup policies, and so on proves complicated in a P2P network.
This transient nature can trigger performance concerns. Different protocols, different architectures, different implementations. That accurately describes current P2P solutions. Currently, developers use diverse methodologies and approaches to create P2P applications. To tackle this deficit, Sun developed Jxta. Jxta strives to provide a base P2P infrastructure over which other P2P applications can be built. This base consists of a set of protocols that are language independent, platform independent, and network agnostic that is, they do not assume anything about the underlying network.
These protocols address the bare necessities for building generic P2P applications. Designed to be simple with low overhead, the protocols target, to quote the Jxta vision statement, "every device with a digital heartbeat. Jxta currently defines six protocols, but not all Jxta peers are required to implement all six of them. The number of protocols that a peer implements depends on that peer's capabilities; conceivably, a peer could use just one protocol. Peers can also extend or replace any protocol, depending on its particular requirements.
It is important to note that Jxta protocols by themselves do not promise interoperability. The same is the case with Jxta. Just because two applications are built on top of Jxta doesn't mean that they can magically interoperate. Developers must design applications to be interoperable.
However, developers can use Jxta, which provides an interoperable base layer, to further reduce interoperability concerns. Undoubtedly, the first step towards providing a universal base protocol layer is to adopt a suitable representation that a majority of the platforms currently available can understand. XML is the ideal candidate for such a representation.
The Jxta developers recognize that XML is fast becoming the default standard for data exchange. XML provides a universal, language-independent, and platform-independent form of data representation. XML can also be easily transformed into other encoding. Hence, the XML format defines all Jxta protocols. In fact, a Jxta entity does not require an XML parser; it's an optional component. Just think of XML as a convenient form of data representation used by Jxta.
Smaller entities like a mobile phone might use precompiled XML messages. Both peers and peer groups can offer services. A service offered by a peer individually, at a personal level, is called a peer service, a concept equivalent to centralization. No other peer needs to offer that service; if the peer is not active, the service might become unavailable.
Peer groups offer services called peer group services. Unlike peer services, these services are not specific to a single peer but available from multiple peers in the group. Peer group services are more readily available, because even if one peer is unavailable, other peers offer the same services. The key to Jxta lies in a set of common protocols defined by the Jxta community.
These protocols can be used as a foundation to build applications. Designed with a low overhead, the protocols assume nothing about the underlying network topology over which an application that uses them is built.
Figure 1. 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.
The Jxta solution Different protocols, different architectures, different implementations. From the Jxta vision statement: Project Jxta is building core network computing technology to provide a set of simple, small, and flexible mechanisms that can support P2P computing on any platform, anywhere, and at any time. The project is first generalizing P2P functionality and then building core technology that addresses today's limitations on P2P computing.
The focus is on creating basic mechanisms and leaving policy choices to application developers. XML in Jxta Undoubtedly, the first step towards providing a universal base protocol layer is to adopt a suitable representation that a majority of the platforms currently available can understand.
Understand the Jxta jargon Before proceeding any further, let's quickly look at the various concepts in Jxta. Peers Any entity on the network implementing one or more Jxta protocols. A peer could be anything from a mainframe to a mobile phone or even just a motion sensor. A peer exists independently and communicates with other peers asynchronously.
Peer groups Peers with common interests can aggregate and form peer groups. Peer groups can span multiple physical network domains. Messages All communication in the Jxta network is achieved by sending and receiving messages.
These messages, called Jxta messages, adhere to a standard format, which is key to interoperability. Pipes Pipes establish virtual communication channels in the Jxta environment. Peers use them for sending and receiving Jxta messages. Pipes are deemed virtual because peers don't need to know their actual network addresses to use them. That is an important abstraction. Services Both peers and peer groups can offer services.
Codats can be published, discovered, and replicated if necessary. Advertisements An advertisement publishes and discovers any Jxta resource such as a peer, a peer group, a pipe, or a codat. Advertisements are represented as XML documents.
Identifiers Identifiers play a key role in the Jxta environment. Identifiers specify resources, not physical network addresses. World peer group Every Jxta peer is, by default, a member of the world peer group. Each Jxta peer intrinsically knows the world peer group and can join this peer group, even if it can't find any other peers on the network.
Even disconnected peers are members. Net peer group On a local network, the network administrators can usually configure a peer group that every peer on the network can join: the net peer group. This group resembles a DHCP dynamic host configuration protocol service.
The net peer group provides peers with a global connectivity according to restrictions imposed by the administrators. Rendezvous peers A rendezvous peer is a special peer that stores information about other peers it knows about by caching these known peers' advertisements.
Thus, a rendezvous peer can help peers discover other peers in the network. Rendezvous peers can also forward discovery requests to other rendezvous peers. Endpoints Endpoints are destinations on the network and can be represented by a network address.
The Jxta solution to P2P
IM over JXTA
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.
Subscribe to RSS
In this study, the application aims use Peer-to-Peer technology to perform bidirectional communication. As the web continues to grow in both content and the number of connected devices, Peer-to-Peer computing is becoming increasingly prevalent. JXTA is a set of open, generalized Peer-to-Peer P2P protocols that allow any networked device sensors, cell phones, PDAs, laptops, workstations, servers and supercomputers to communicate and collaborate mutually as peers. The JXTA protocols are programming language independent and multiple implementations, also known as bindings, exist for different environments. Their common use of the JXTA protocols means that they are all fully interoperable. Therefore, in this study we introduce the Peer-to-Peer architecture that distribute the resources responsibility among all the connecting peers, the JXTA concepts, protocols and structure, so finally we can be able to implement a chat with sharing files application in JXTA.
P2P Deployment Using Jxta
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together. Skip to content. Permalink Dismiss Join GitHub today GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together. Sign up. Branch: master.