HomeDigital EditionSys-Con RadioSearch Java Cd
Advanced Java AWT Book Reviews/Excerpts Client Server Corba Editorials Embedded Java Enterprise Java IDE's Industry Watch Integration Interviews Java Applet Java & Databases Java & Web Services Java Fundamentals Java Native Interface Java Servlets Java Beans J2ME Libraries .NET Object Orientation Observations/IMHO Product Reviews Scalability & Performance Security Server Side Source Code Straight Talking Swing Threads Using Java with others Wireless XML

At a training session I recently attended, a presenter mentioned that his cell phone crashes whenever he runs a simple MIDlet that he wrote. While it may have been inevitable that poor-quality environments would make it onto J2ME platforms, it's still distressing to see some J2ME development proceeding down the trail blazed by the megacorp in Redmond.

Now I am not one of those who despise Microsoft. Microsoft is not inherently evil, and both good and bad have come out of it, as is true of just about any corporate entity. But I do feel that Microsoft's sins have been egregious in the area of software quality, and I fear that it has inured us to accept software of far lesser quality than we should accept.

When your desktop PC offers up the blue screen of death, you may be annoyed and curse the denizens of Redmond, but most people have come to accept occasional freezes and splats as one of the costs of computing (or, at least, the cost of computing with Windows). But there's no reason we should carry those diminished expectations to mobile devices.

Because the primary purpose of PCs is computing, it may be easy to rationalize software failures as the price you pay, but the primary purpose of cell phones is communication. For this reason - or from a different perspective, because anything that impedes making and receiving calls reduces revenue - most cell phone manufacturers and network providers have historically been very restrictive about what, if any, third-party software they allow on their handsets. If customers can't make or receive calls, they'll be more inclined to switch carriers, and they'll rarely make a distinction as to whether it was the hardware, the software, or the network that was at fault.

This mentality contrasts sharply with that of the other major platform for J2ME applications, PDAs, which have from the beginning been first and foremost about applications. Since the early Palm Pilots (and their precursors), the modus vivendi with PDAs has been to download applications; so where cell phones restricted customer deviation from a defined configuration, PDAs embraced it. Consequently, PDA manufacturers and users may accept the occasional crash, much like they do on PCs, as a risk worth taking. To what degree are we willing to trade off the reliability of cell phones for the convenience that downloadable applications add?

Shouldn't we first ask whether we need to make significant trade offs? Is it not feasible to architect the KVM to be, if not bulletproof, at least robust enough to prevent all but the most onerous and insidious programming errors from significantly compromising the reliability of the platform? Or is it that we could, but it's not considered cost-effective to invest the extra effort to do so? Or is it time-to-market that trumps the delivery of quality software?

Consider some of the vulnerabilities that poor quality software could expose us to as cell phones become more powerful. You'll have financial and other personal information on your smart phone, but will it have enough computing capability to support virus checker, or firewall software powerful enough to thwart sophisticated attacks? Your cell phone's mobility combined with Bluetooth and WiFi capabilities will allow it to be more promiscuous than a desktop or a less-mobile laptop, joining and parting ways with numerous hotspots as you travel around. Does ubiquitous computing mean ubiquitous targets for compromised security?

Many efforts are afoot to address these concerns, and the walled-garden security model of the KVM is a good foundation. But as with building a house, a great blueprint counts for little if the construction is shoddy. What can we do? As developers we can promote high quality in the software we write, and provide informed voices in discussions of the issues and in the development of specifications. As consumers we can vote with our pocketbook, eschewing OEMs and network providers who offer substandard services. But ultimately it's the marketplace that will determine the quality provided.

About The Author
Glen Cordrey is a software architect working in the Washington, DC, area. He's been using Java for five years, developing both J2EE and J2ME applications for commercial customers. [email protected]

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.
  E-mail: [email protected]

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.