With the unveiling of Project JXTA, not only is Sun introducing new building blocks for P2P development, but it is launching an open and decentralized peer-to-peer network. While JXTA can be used for P2P applications that operate in a closed environment such as an intranet -- and its success may ultimately be measured by its utilitiy in that domain -- a wider public JXTA network, the JuxtaNet, will form. The core JXTA protocols are the foundation for Sun's initial reference implementation, which in turn is the basis for Sun's example applications, including the Shell and InstantP2P. These applications give life to the JuxtaNet as they are run and instantiate peers that intercommunicate.
The JuxtaNet is significant in that it is an open, general-purpose P2P network. JXTA is abstracted into multiple layers -- core, service and application -- with the intention that multiple services will be built on the core, and that the core and services will support multiple applications. In fact, there is no constraint against the simultaneous existence on the JuxtaNet of multiple services or applications designed for a similar purpose. As an example, just as a PC's operating system can simultaneously support multiple word processors, the JuxtaNet can simultaneously support multiple file-sharing systems.
To better understand the JuxtaNet, let's compare it with GnutellaNet, another open and decentralized P2P network. Will the JuxtaNet have the sort of appeal that has attracted developers to GnutellaNet?
|Have you explored JXTA? Tell us your first impressions and let others know what you've learned so far.|
|Post your findings|
The Gnutella protocol was designed for a single purpose: to support decentralized P2P file-sharing. Progressive improvements driven by developer enthusiasm have enabled the resulting GnutellaNet to overcome major obstacles and experience substantial growth. By Clip2 estimates, the 13-month-old network currently encompasses about 25,000 simultaneous peers with approximately a quarter million unique peers active on any given day.
While it is effectively specialized, Gnutella does generalize along a few lines:
- In behavior that is much-discussed, but rarely seen on the present GnutellaNet, Gnutella search queries could be interpreted as something other than portions of names of desired files. A classic example is a query for a ticker symbol being interpreted as a query for the corresponding stock price. In an example stretching even farther afield, Gnutella's query-and-response messages could be put to use as a bid-response mechanism for peer-to-peer auctioning.
- In Gnutella, search and file transfers are cleanly separated, and an established protocol, HTTP, is used for the latter. Standard Web browsers can therefore access Gnutella peers (provided they are not blocked for social-engineering reasons), which are in essence transient Web sites.
- Because it is an open protocol, the end-user interface and functionality are separable from the underlying network. The result is a sizable number of interoperable applications that interact with the common GnutellaNet.
In contrast to Gnutella, JXTA was designed for a multiplicity of purposes. Gnutella is one protocol (or perhaps 1.5 if you include its minimalist use of HTTP), while the JXTA core consists of several protocols. This difference is considerable and hard to overstate. A slightly exaggerated analogy: if Gnutella were a pocket calculator, then JXTA would be a PC.
Having just launched, the JuxtaNet has a relatively small population that will grow as JXTA applications are developed and adopted. Clip2 has begun continuous automated tracking of the JuxtaNet, and we now report current JuxtaNet metrics on our site. Based on the experience of the GnutellaNet, there are several reasons to expect developer enthusiasm for JuxtaNet from similar quarters:
- Versatile core protocols for peer discovery, peer group membership, pipes and peer monitoring form a rich foundation on which a wide variety of higher-level services and applications can be built. Developers, eager to develop new decentralized applications, have found that the path to build them in Gnutella involves overloading existing constructs or carefully grafting on new ones without breaking the installed base. The alternative -- individually developing a proprietary vertically integrated application from the P2P networking layer up to the application layer -- is unattractive in many cases. This high friction has arguably inhibited development, but JXTA lowers it. JXTA's groups, security, pipes, advertisements and other aspects should be welcomed building blocks.
- In terms of attracting developers, the open nature of the JXTA protocols is an advantage to the JuxtaNet just as the open nature of the Gnutella protocol is an advantage to GnutellaNet. The higher complexity of JXTA relative to Gnutella gives it a steeper learning curve, but Sun's hedge against this is the release of open-source reference code that educates by example.
- Just as with the GnutellaNet, the JuxtaNet is an open network whose applications can be expected to be interoperable at lower levels. This can potentially give developers the "instant user base" phenomenon familiar from the GnutellaNet.
- JXTA's initial design represents an educated guess at the makeup of a robust P2P foundation. Sun's intent to have the project be community-driven gives hope that the foundation will evolve as necessary to meet unpredictable future needs. In its history, GnutellaNet has made the most progress during the periods when independent developers were in close contact with one another and able to collectively drive the network's evolution.
Gnutella on JXTA?
Because of its focus on decentralized P2P file-sharing, decentralized distributed search is the crux of the Gnutella protocol. Such peer-to-peer content searching is not core to JXTA. Instead, this is precisely the sort of functionality well-suited for the service level between the core and applications. By way of example, and in anticipation of early demand for such a service, Sun has released a prototypical Gnutella-inspired Content Management Service (CMS) for JXTA and a simple application, InstantP2P, that utilizes CMS. Going back to the PC-and-word-processor analogy, one could regard InstantP2P as the Notepad of JXTA file-sharing applications. More elaborate applications could be implemented on CMS, and indeed CMS itself could be extended or supplanted.
We conclude with an interesting exercise for the reader that drives the point home that JXTA is a general-purpose set of lower-level building blocks. Your mission, should you choose to accept it: implement a decentralized P2P file-sharing application that adheres as closely as possible to Gnutella's search model (set of active connections, broadcast queries, routed responses) while using as much of the JXTA core and CMS as possible. Extra-credit enhancements relative to Gnutella, such as content interest groups, should be easy. Alternatively, certain aspects of JXTA, such as its asynchronous communication model, may require some creative workarounds. Write me at firstname.lastname@example.org with your experiences.
Kelly Truelove is an independent research analyst who, via Truelove Research, covers peer-to-peer technology with a focus on P2P content search, storage, and distribution networks. He is regarded as a leading expert on consumer file-sharing systems, which he covers with a data-driven approach.