lop 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 email@example.com 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.