Java Essentials: What Is Wireless Java?by
Wireless Java consists primarily of the Java 2ME (Micro Editon) platform with its API and tools like the Wireless Java Toolkit. In the J2ME, there's the Foundation Profile MIDP PersonalJava Configurations. The Foundation Profile lets you write applications for small wireless devices that do not support a GUI. Mobile Information Device Profile (MIDP) is a more advanced set of APIs including MIDlets (wireless-optimized servlets) and other instructions for downloadable applications and services for network-connectable, battery-operated mobile handheld devices such as cell phones, two-way pagers, and PalmPilots. The PersonalJava Application Environment provides Java APIs for devices requiring a high degree of network connectivity such as applications for the home and office. There's also a Java API under consideration and development for Bluetooth, an important emerging standard for wireless integration of small devices.
These APIs are parameterized based on configurations and profiles. A configuration defines the minimum set of class libraries available for a range of devices. A profile defines the set of APIs available for a particular family of devices. For example, the profile for the cell phone vertical market is separate from the profile for the personal organizer vertical market, but both profiles work with the same configuration. The two common types currently employed are CDC and CLDC. The Connected Device Configuration (CDC) specification is based on the classic Java virtual machine specification, which defines a full-featured runtime environment that includes all of the functionality of a runtime residing on a desktop system. This configuration is intended for larger wireless devices with at least a few megabytes of available memory. The Connected Limited Device Configuration (CLDC) specification consists of the K virtual machine (KVM) and a core set of class libraries appropriate for use within an industry-defined profile. This configuration is intended for small wireless devices with simplified UI, minimum memory budgets starting at about 128K, and intermittent network connections with lower bandwidth. The KVM is a runtime implementation of the JVM.
Who Are the Players?
There's, of course, Sun, which plays the role of managing evangelist and caretaker. The market plays out, accordingly. The primary wireless Java implementation players consist of the following cell phone manufactures: NTT DoCoMo, Motorola/Nextel, Ericsson, Nokia, Siemens, Samsung, and the recently announced Qualcomm. The secondary players are RIM's Blackberry, followed by Palm, Handspring, and Bluetooth.
In regards to Java cell phones, the sophisticated or smart cell phone manufactures were the first to adopt Java. NTT is one of the initial stalwarts in the space, given the rather early, enormous acceptance and use of cell phones in Japan and the evolving, sophisticated wireless protocol i-Mode. This protocol supports advanced wireless Internet applications with database, GUI, and more. Motorola/Nextel are driving the Java-based cell phone market here in the U.S., as well as abroad. They're using whatís called the iDEN wireless OS/protocol platform to support advanced wireless Internet application features that are fulfilled by the J2ME API and tools. Recently, AT&T Wireless announced that its service will support J2ME for games and other wireless services. Ericsson and its northern European market rounds out these major players, in terms of adopting and using wireless Java technologies in the application development for their i-Mode-like platform. Nokia is coming on strong with the largest announced commitment plans to ship 50 million Java-enabled products by the end of this year.
RIM BlackBerry is almost in a market of its own in the wireless Java arena, based initially on its widespread acceptance as the corporate wireless email solution. That's because it offers a Java-based BlackBerry handheld PDA with integrated cell phone for GSM/GPRS Networks in North America. Regarding PDAs, the interest in Java development has been somewhat retarded, but is now gaining momentum. Palm and Handspring are the major players in this space. While the Palm OS promotes Java as well as other programming languages, Handspring recently confirmed its plans to integrate J2ME functionality into its PDA devices.
How Will Wireless Java Succeed?
Wireless Java is a viable set of programming API and tools for wireless devices, especially for building robust mobile Internet/intranet Web applications that may have a need for a very lightweight but practical GUI and database access. Moreover, wireless Java is natural for integrating and interacting with Wireless Markup Language (WML)-based Web services for delivering a wide range of applications.
The success of wireless Java is based on the specification leadership by Sun, and the adoption and implementation by Sun's "appointed" or certified J2ME vendors. Sun would rather serve as the evangelist for wireless Java by first defining the general parameters of the various specs and APIs (along with its vendor partners) and then managing its vendors, while the vendors drive, create, and apply specific parameters and innovations (and investments) to the various specs and API. Moreover, Sun lets its vendors drive the Java Community Process (JCP) in terms of spec and API maintenance and improvements. Sunís most important J2ME vendors are currently these cell phone vendors: NTT DoCoMo, Motorola/Nextel, Ericsson, and Nokia. Coming up strong in terms of importance is RIM's BlackBerry, followed by Palm, and Handspring.
What's Wrong With Wireless Java?
Wireless Java is still in its infancy in terms of maturity. Currently, only a handful of J2ME implementations are available as early final releases (1.0 or greater). This is the area in the Java specification that's expected to have continued slow but steady growth for at least the next two years. Later this year and in early 2003, expect to see much more wireless Java integrated and/or used with the J2EE platform and Java Web Services Developer Pack (WSDP). J2ME vendors are currently adopting Web services as part of their J2ME implementations. Also, watch Jini as it continues to evolve for device handling over time. Current versions promise to be much more secure; therefore, look for J2ME vendors and implementors to either adopt this and/or Bluetooth as part of a wireless Java networking paradigm. So, to answer the question: what's wrong with wireless Java? In a word, nothing. These things just take time.
Wireless Java Resources
Here's a sampling of recent wireless Java articles, tutorials, and O'Reilly book excerpts as published on ONJava.com. The topics covered include understanding MIDP and MIDlets; programming MIDP GUI clients; building wireless, Java-based Web clients; invoking JSP from MIDlets; and extending J2EE for wireless Java application development.
The Mobile Information Device Profile and MIDlets, Part 5
By Kim Topley
This is the final excerpt in a series on MIDP and MIDlets from J2ME in a Nutshell, focusing on the delivery and installation of MIDlets. Jun. 26, 2002
Building Wireless Web Clients, Part 2: Using An Amazon Bookstore
By Kim Topley
Browse Amazon from a cellphone? This series describes an application for querying Amazon with an ISBN number and getting back book details, sales ranking, and number of reviews. In the second part, we build a local bookstore that lets users search by title rather than ISBN. May. 15, 2002
Building Wireless Web Clients, Part 1: Pitfalls of MIDP HTTP
By Kim Topley
While it seems that a MIDP HTTP client would be similar to one written for J2SE, it ain't necessarily so. This article depicts some of the pitfalls in getting information from a server and displaying it in a MIDP client. Apr. 17, 2002
The Realities of Deploying Wireless J2ME Solutions Over Unreliable Networks
By Mike Wilson
Why does J2ME work on the desktop, but not necessarily in the wireless environment? Learn more about wireless network programming design decisions for mobile devices on the Java 2 Platform, Micro Edition (J2ME). Mar. 27, 2002
Learning Wireless Java: MIDP GUI Programming, Part 3
By Qusay Mahmoud
This article discusses how the various classes in the low-level MIDP API can be used to create GUI components. Jan. 23, 2002
Invoking JavaServer Pages from MIDlets
By Qusay Mahmoud
Wireless and the enterprise go great together, but how do we make it happen? This article shows how to invoke JSPs from wireless apps such as MIDlets. Dec. 5, 2001
Extending J2EE for Mobile Application Development
By Jeffrey M. Capone, Ph.D.
Learn to extend J2EE for use in developing mobile, wireless Java applications through the use of a new server-side component model. Oct. 17, 2001
Return to ONJava.com.