1541-4922/05/$25.00 © 2005 IEEE
Published by the IEEE Computer Society
Enable Pervasive Computing with Java
Lu Yan , Turku Centre for Computer Science
Today's computing history lesson: the Green Project created Java specifically for an embedded device, a handheld wireless PDA that was never released as a product. However, Java was launched as a new Internet language. Over time, it became popular for building desktop applications, Web services, and ubiquitous systems, partly because of its "write once, run anywhere" promise.
There's no doubt that Java and PDAs are a powerful combination. In Java Development on PDAs: Building Applications for PocketPC and Palm Devices, Daryl Wilding-McBride writes that Java developers often have a preconception that "having to choose a hardware platform is a concern of the past, since Java runs on any platform." However, Wilding-McBride argues that this isn't true for PDAs. The book's later chapters strengthen his argument, discussing portability issues between the PocketPC and PalmOS devices. As a result of platform dependence, Wilding-McBride structured the book as a comparison of the two tools. Although this division works well at the beginning, demonstrating both devices' merits, Wilding-McBride fails to keep a good balance between the two in the later chapters.
Java Development on PDAs begins with a brief introduction to the Java 2 Platform, Micro Edition (J2ME) configurations, the Connected Limited Device Configuration, and the Connected Device Configuration. Then Wilding-McBride demonstrates an important CLDC profile, the Mobile Information Device Profile, with a simple generic applet.
The next two chapters are particularly interesting, presenting more practical issues on setting up the development environment. Chapter 3 compares various PDAs according to their strengths, weaknesses, and Java support. Although rapid technology advancement makes the performance and price data the book presents seem outdated, the book provides insight into the PDA trends at that period. Chapter 3 walks readers through setting up the software environment for developing PDA applications using Java. Additionally, Wilding-McBride introduces several free or low-cost development toolkits that work with the later chapters' samples.
Before readers get their hands dirty, Chapter 4 prepares them with important considerations for designing for small, constrained devices. Chapters 5 to 7 deal with the main problem: at this point, you're ready to do some real programming in your chosen platform. Wilding-McBride introduces the necessary knowledge with well-designed samples in a logical manner, including the user interface, information storing, and networking. The last two chapters discuss advanced and future techniques, such as Java Database Connectivity, Web services, JXTA, Jini, and Bluetooth.
Last summer, I gave Java Development on PDAs as preliminary reading material to a postdoctoral researcher and several master's students involved in a pervasive computing project. Some complained that the book offered "much more detail on the PalmOS side than on the PocketPC side." In fact, the PalmOS coverage overwhelms that of the PocketPC. Wilding-McBride's bias toward the PalmOS alliance is obvious; the PalmOS sections are well written, with abundant examples and sample codes. (Even if you don't have a PDA, you can still run the samples via an associated PalmOS simulator, which is a significant highlight.) As a strong contrast, the PocketPC coverage is far less attractive—fairly short and lacking examples. Discussing more Java development on the PocketPC devices would greatly improve the book's value and take it to the really useful level, rather than just being handy.
Because of its drawbacks, Java Development on PDAs is a better tutorial than a reference. If you're a primary Java programmer who intends to expand your scope to PDAs, this is the book for you. For more experienced programmers and those interested in Java development for PocketPC devices, I'd recommend that you check out other books on advanced J2ME.
Lu Yan is a research scientist at the Turku Centre for Computer Science, Finland. Contact him at lu.yan@ieee.org.