With the next generation of wireless devices entering the market, the opportunities for Java developers are great. Analysts are predicting that the demand for wireless applications is set to explode, with over 170 million U.S. users subscribing to wireless services by 2005. Other countries are moving even faster. Fortunately, recent developments have left us well prepared to meet the inevitable demand for applications that this growth will create.
Already, important technologies like the small-footprint J2ME are in place to help developers create applications for small devices. With J2ME, developers can exploit the established capabilities of Java to write applications that are secure, interoperate with existing solutions, and easily port to new devices, all without sacrificing the flexibility that Java gives us.
Almost in parallel, interest is also growing in using peer-to-peer (P2P) technologies for wireless. Made popular by services like Gnutella and Napster, P2P computing rejects the notion of centralized servers in favor of peer groups - users bound by a common interest in processing, sharing, and storing information. With P2P, we can create networks of systems with very high levels of redundancy, privacy, and performance. Until recently, however, the growth in P2P was threatened because there was no standard platform upon which applications could be crafted.
Project JXTA, incubated at Sun Microsystems and then quickly placed into the community development process, has established an early lead in developing the infrastructure needed to streamline the development of P2P applications. Unlike other approaches, JXTA provides the building blocks for creating P2P services and applications. In addition, JXTA offers strong security and interoperability between applications through well-defined protocols.
How can JXTA technology be extended into the wireless space? Most wireless devices have severe limitations on available memory, processor performance, and power. Pagers and cell phones can't be expected to support a full-blown JXTA environment, at least not anytime soon.
Fortunately, we have experience dealing with these limitations. The Java developer community tackled this issue some time ago and came up with the Connected Limited Device Configuration (CLDC) and Mobile Information Device Profiles (MIDP), core class libraries and specialized APIs designed to work in the constrained environments of wireless devices. Despite their small size, CLDC and MIDP offer developers the tools they need to create powerful wireless applications that can interoperate with the most sophisticated Java solutions running on workstations, servers, and mainframes.
The JXTA developer community has taken a similar approach by defining a set of functions designed to work in concert with MIDP. We call it the JXTA for J2ME implementation. Once fully deployed, it will allow a MIDP device to participate in P2P activities with JXTA peers running on larger platforms. The community's goals are straightforward: (1) wireless P2P applications should be easy to use and easy to develop, (2) they should be small enough to be used with cell phones and PDAs, and (3) they should be interoperable with JXTA applications running on larger systems. A tall order, given the constraints of wireless systems.
The solution is simple. Rather than hosting a complete JXTA environment on a small wireless device, some of the work will be done elsewhere. JXTA programmers are already familiar with the notion of a JXTA relay, a peer designated to act on behalf of others. JXTA relays help route information across networks and through firewalls. We've extended this idea to create a JXTA peer service that can act on behalf of a wireless JXTA peer, store and forward messages when polled, and translate and condense JXTA XML advertisements (the lingua franca of JXTA) into a more compact form easily processed by wireless peers.
This approach is straightforward, yet it's a no-compromise way to allow J2ME developers to extend P2P into the realm of wireless. A prototype application was demonstrated at JavaOne Japan in November 2001, and work continues on a full implementation. For details on its status, visit http://jxme.jxta.org.
The JXTA for J2ME implementation interoperates with other JXTA implementations and provides a simple API to help J2ME developers quickly write JXTA applications and services for small devices. I see opportunities to create some exciting applications in areas like gaming, financial services, and instant messaging using this technology.
Check out the Project JXTA Web site at www.jxta.org to learn more about peer-to-peer computing, experiment with some sample applications, download the docs and code, and start riding the next big wave of applications development. Join us!
Kuldip Singh Pabla is the software engineering manager with the Project JXTA team at Sun, managing various proects including the JXTA for J2ME implementation. Before JXTA, he was the engineering manager for Java Embedded Server, J2ME division at Sun.