Project JXTA: An Open, Peer-to-Peer Collaboration Platform using Java and XML (1/2) - exploring XML
Project JXTA: An Open, Peer-to-Peer Collaboration Platform using Java and XML
Interest in peer-to-peer (P2P) technology is growing rapidly, as shown by the popularity of services such as Napster and Gnutella. Sun Microsystems started a project called JXTA to examine the potential of a generic P2P platform, which is described here.
Almost overnight, users everywhere have adopted innovative technologies that enable them to use the Internet in more ways than just Web surfing. With distributed computing applications like SETI@home millions of users have contributed their computing resources to work on a common computational analysis. Instant messaging services have enabled users to communicate and collaborate with their peers in real time. And true peer-to-peer (P2P) computing, by applications like Napster, Gnutella, and Freenet, has offered a compelling and intuitive way for Internet users to find and share resources directly with each other, often without requiring a central server or coordinator. As much as these diverse applications have broken new ground, they most often address only a single function, run primarily only on a single platform, and are unable to directly share data with other, similar applications.
Project JXTA vies to help create a common platform that makes it simple and easy to build a wide range of distributed services and applications where every participating device is addressable as a peer, and where peers can forward from one domain to another. The JXTA technologies will enable developers to focus on their own application development while easily creating peer-to-peer distributed computing software.
From client-server to peer-to-peer
In contrast to the InternetÂ’s topology as a flat interconnection of networks, most network applications have been built following the hierarchical client-server model. The World Wide Web made client-server computing commonly available through the acceptance of a universal client, the Web browser, that uses the standard communication protocol HTTP to talk to servers, that can display information described in the standard format of HTML, and that can execute applications written in Java and XML. Anyone with Web-enabled devices ranging from personal computers to cell phones can use this model as long as they connect to a Web server with a known location and name.
Peer-to-peer computing enables applications that are collaborative and communication-focused. High availability comes through the existence of multiple peers in a group, making it likely that at any time there is a peer in the group able to satisfy a user request. This stands in stark contrast to traditional computing models, where high availability comes through complex load-balancing and application fail-over schemes. Peer-to-peer computing leverages available computing performance, storage, and bandwidth found on systems around the globe, and works because people realize that there is value in sharing their power with others in order to reap the benefits when they need it themselves. In many ways, the world of peer-to-peer computing is juxtaposed to the hierarchical client-server model, hence the name Project JXTA.
Case in point: Searching and Sharing
Peer-to-peer computing is generating excitement because it offers an intuitive model for the most fundamental Internet activities: searching and sharing. Although todayÂ’s applications are primarily used for finding, retrieving, and using media files, they hint at what complete access to the Web can deliver in the future:
- Resources, including information and processing power, can be shared directly from those who have them to those who need them. Documents can be managed and encrypted so that they are anonymous, likely to exist somewhere in the network at all times, and more secure.
- Peer-to-peer searches are distributed, parallel, and asynchronous, enabling Â‘deepÂ’ searches of Internet content that quickly yields up-to-the-minute results. TodayÂ’s look-ups conducted by Internet search engines are limited by the months it takes their crawlers to traverse the sites that they index. In contrast, peer-to peer search results are more relevant, and can be more focused. For example, by qualifying the peer group, and qualifying the search, more precise results can be obtained over a much larger search space.
- Instant messaging systems can locate users quickly with distributed searches, enabling direct user-to-user communication and collaboration independent of any service provider.
- Buyers and sellers can be matched directly through P2P auction and transaction services, and new generations of distributed resource-sharing tools like todayÂ’s Search for Extraterrestrial Intelligence (SETI@home) will begin to appear.
JXTA is an open network computing platform designed for peer-to-peer (P2P) computing. The JXTA platform standardizes the manner in which peers:
- Discover each other
- Advertise network resources
- Communicate with each other
- Cooperate with each other to form secure peer groups
The JXTA P2P platform enables application developers to build and deploy interoperable services and content.
Most peer-to-peer systems are built for delivering a single type of network service (Napster for music file sharing, Gnutella for generic file sharing, AIM for instant messaging). Given the diverse characteristics of network services, and given the lack of a common underlying infrastructure, each vendor has created incompatible technologies that isolate their users from other P2P communities. JXTA intents is to address this problem by providing a simple and generic P2P platform to host generic network services:
- JXTA uses a small number of protocols. Each is easy to implement and integrate into P2P services and applications. Thus service offerings from one vendor can be used transparently by the user community of another vendorÂ’s system.
- JXTA is independent of programming languages, so that it can be implemented in C/C++, the Java programming language, Perl, or other languages. Heterogeneous devices with completely different software stacks can interoperate with the JXTA protocols.
- JXTA is independent of transport protocols. It can be implemented on top of TCP/IP, HTTP, Bluetooth, and many other protocols. This means that a system built on top of JXTA functions in the same fashion when the system is expanded to a new networking environment or to a new class of devices, as long as there is a correct transport protocol handler for the new networking protocol.
Produced by Michael Claßen
Created: May 09, 2001
Revised: May 09, 2001