Software that leapfrogs the intelligence and usability of wireless devices is quite a captivating pitch, yet we shouldn't forget a similarly proffered claim regarding Java on PCs when it became mainstream in 1995. Ultimately, it never took off on the client side, even though it enjoys tremendous success on the server side, resulting in a dedicated and growing base of developers. What could possibly make a mobile and Java combination so much more compelling and captivating than its somewhat failed union with the PC? Will Java truly occupy the new breed of intelligent mobile devices as its new home? I believe so - and a little bit of history can help explain why.
In 1995, it was originally thought that Java's home would be client devices - the PC, Macintosh, or any other computing platform. Developers would use Java to write OS-independent programs (applets) that, when included in an HTML page, could run on client devices to enhance the user interface. Although a few Web-based applications initially incorporated applets, the client devices never became the home for Java.
Having Java on the client provided only marginal gains, and these gains did not outweigh the problems for two major reasons:
1. Because of long download times and incompatibilities among Java platforms (JVMs) and browsers, Web developers eschewed Java on the client and instead concentrated application intelligence and their coding efforts on the server side.
2. As Windows became the dominant client operating system, developers started using the native operating system interfaces, most notably the Windows APIs, to provide advanced application functions such as better user interfaces and offline opera-
Despite client-side problems, Java successfully found a home on the server with the introduction of Java 2 Enterprise Edition during the Internet revolution. Unlike clients, the operating systems and the hardware on servers remained heterogeneous and continued to proliferate with the introduction of Linux. Java came to the rescue by protecting the developer from operating system complexities. J2EE also rapidly displaced ad hoc server-side programming (e.g., PERL, PHP) due to its inherent advantages, including clustering/scalability, object-oriented structure, and code reuse. As a result, Java quickly proved its exceedingly low cost of ownership to the enterprise.
In the wired world, Java improved the end-user experience to a degree, but it's on thin wireless devices that Java will truly demonstrate its capabilities as it's faced with security, connectivity, and user interface issues. Unlike thick desktop clients, these wireless clients have limited screen sizes and input capabilities and immature security capabilities. In addition, they provide only intermittent connectivity to networks. Irrespective of wireless convergence and worldwide standards, hardware and operating system diversity continue to increase at a rate that perplexes even the most competent developers. But once they begin to build wireless applications using Java, developers will quickly see the exponential advantages Java offers wireless applications versus those built for the desktop.
Mobile technologies are only at the cusp of software innovation and true acceptance; the ultimate catalyst will be Java on mobile devices, officially called Java 2 Micro Edition. J2ME advantages include superior user interfaces with graphics; the ability to function offline, beyond wireless coverage; peer-to-peer networking; and improved security and consistency of applications across platforms and devices. For example, a data collection application for field workers, such as job time and expense reporting, improves significantly by offering offline operation and periodic synchronization of the data with the back-end system. A calendaring/scheduling application could significantly benefit from the improved UI by displaying the data in full-screen table format, a feature not currently supported by wireless phones' WAP microbrowsers. Over-the-air application downloads and updates combined with seamless data synchronization will finally unite the unique advantages of server-side and client-side application deployments for the enterprise.
The benefits are compelling, but J2ME must bear a heavy load on its shoulders if it is to replicate the success of its J2EE counterpart. To succeed, it must bridge the large gap between network connectivity and device capabilities. Moreover, as advances in hardware technologies increase the capabilities of mobile devices (such as Pocket PCs), and global economic slowdown hinders the rollout of faster 3G wireless networks, the gap between network connectivity and device capabilities will only widen. J2ME needs to fill this gap by providing not only good user experience, but also seamless synchronization, advanced server communications, and solid peer-to-peer communications.
The wireless environment has created many new challenges that don't exist in the line-wired environment, most notably an ever-increasing gap between the capabilities of devices and the bandwidth of wireless networks. J2ME is an ideal candidate to address these unique challenges and fill the gap, making mobile devices the ideal new home for Java.
However, truly settling into its new home will require Java to enable more than just mobile gaming and entertainment applications; Java needs to enable corporate vertical market applications, where over-the-air provisioning, application updates, seamless synchronization, and advanced server and peer-to-peer communications are among the basic requirements. Java's capabilities and extensibility have never really been in doubt. It's only a matter of time until Java nicely outfits its new home and delivers on its wireless promise.
Jeff Capone, Ph.D., a nationally known Java expert,
has spent the past decade researching wireless applications.
As Aligo's CTO, Jeff leads the technology development and
is principal architect of the M-1 Server. Before Aligo,
he was a professor at Arizona State University and director
of the Network Engineering and Wireless Telecom Lab.