J2ME: Introduction to the Platform
This is the first article in a four-part series on Java 2 Micro Edition (J2ME). In this article, Bryan Morgan introduces the components of the J2ME platform and explains why this platform is set to revolutionize wireless application development.
Bryan Morgan is the founder and managing editor of the Wireless Developer Network. He will be a regular contributor to InformIT on wireless application development topics.
On December 12, 2000, Sun Microsystems announced that they will ship a developer release of Java 2 Micro Edition (J2ME) and the Mobile Information Device (MID) profile for the PalmOS platform. While alpha-quality versions of J2ME's KVM (Kilobyte Virtual Machine) have been available since JavaOne 1999, this announcement marks the first true release candidate for the wildly popular PalmOS computing platform. The chances are very good that you've built a Java applet or servlet, or even worked with Enterprise JavaBeans (part of the Java 2 Enterprise Edition, or J2EE) at this point. In this series of articles on J2ME, I'll examine what J2ME means to mobile application developers and how this platform differs from the J2SE (Standard Edition) and J2EE. I'll step through the features of several available J2ME tools and developer programs. Finally, I'll conclude with the development of several J2ME applications to put it through its paces, so to speak.
While Java has become a first-rate tool for server developers, to date it has basically failed as a client development platform. (Remember all those buggy Java applets that used to render Web sites useless? How about Corel's attempt to rework their office suite in Java?) So why would Sun Microsystems take such aggressive measures to push Java on that most finicky of all clients, the mobile device? There are several good answers to this question. The first, and most obvious, is the sheer size of the market. It would be a poor business practice not to target a market that's expected to grow fivefold in the next three years! Beyond that, it's also important to remember that Java was originally designed to be a development platform for embedded and household devices such as refrigerators, toasters, air conditioning units, and so on. The technology was designed from the ground up to be cross-platform, modular, and mobile.
Consider the desktop world for a moment to understand why client-side Java never caught on. Ninety-eight percent of corporate desktops run the same basic operating system (Microsoft Windows derivative); a similarly high percentage use the same office suite (Microsoft Office), and modifications are fairly static. Contrast that with the wireless world now facing us: pagers, phones, PDAs, and other devices all run different operating systems, different user interfaceseven connect to networks in different ways. Technologies such as WAP have attempted to bridge this gap, but fall short in terms of capability (no complex logic can be embedded in the WML deck, instead requiring continuous round trips to a server) and interactivity (graphics capabilities are weak to nonexistent), and it's difficult to build a single application that runs correctly across a wide range of devices. When faced with these obstacles, you can see that Java becomes extremely tantalizing to both developers and device manufacturers as a sort of "Holy Grail": It offers an industry-standard object-oriented language; 2.5 million existing developers; a powerful, prebuilt class library; and broad industry support. To date, all the wireless players have lined up to announce support, including Motorola, Nokia, Matsushita, NTT DoCoMo, Research In Motion, Palm, Handspring, and Symbian. In addition to the PalmOS, Java-enabled devices from Motorola and Research In Motion will begin appearing on North American shelves in 2001. How do you take part in this revolution? Read on!