Java Community Process and Embedded Java User Interface
Java Community Process and Embedded Java User Interface
Java Community Process and Embedded Java User Interface
Patrick Mueller IBM WebSphere Device Developer Runtimes Architect pmuellr@acm.org This paper is presented as a position paper for the OOPSLA 2003 Workshop on Pervasive Computing.
Introduction
Java is often presented as a language suited for Pervasive Computing and since there is an entire area of the Java Community Process (JCP) (http://www.jcp.org) focused on the embedded space, namely the J2ME (Java 2 Micro Edition) technology platform, it seems like a natural place to look for Java technology relating to Pervasive Computing. This papers focus will be on user interface, and will examine what work the JCP has done, and has not done, in the user interface area of embedded java.
1 of 5
tactile systems available (touch screen), visual displays that require fine control, such as scroll bars and menus, can be quite hard to use. Tactile: Popular computer tactile interfaces include keyboards, mice, and touch screens. Of these, only the touch screen is likely to find favor in pervasive devices. Both mice and keyboards require too much physical real estate as well as typically having the user be situated in a particular position to allow comfortable inputting. Vocal: Voice input, although having been available for years, seems to finally be taking off to some extent in the voice response market (phone menu systems). Continued work on recognition software and hardware (microphones and noise cancellation) will make voice input a more practical option for pervasive devices in the future.
2 of 5
JSRs 62 and 216 Personal Profile 1.0 and 1.1 Personal Profile (PPro) provides much of the java.awt package functionality from the J2SE platform. While there are some restrictions allowed, such as limiting the size and location of windows, aspects of the specifications are still very much desktop centered. For instance, the specification calls for supporting mouse move and drag events, even when a device may not have an input device that supports this type of action. Due to the size of the library, PPro requires a level of hardware that is not appropriate for many pervasive devices. The 1.1 revision of Personal Profile is currently under development. JSR 113 Java Speech API 2.0 This JSR is a the follow-on to the Java Speech API (JSAPI) 1.0 specification, which was published 5 years ago, in 1998. The 1.0 specification has numerous non-J2ME friendly aspects, such as requiring speech engines to synchronize with the AWT event queue, references to the Locale class, and references to security classes. Unfortunately, there has been no public activity for this JSR since the Expert Group formed in early 2001. JSRs 129 and 217 Personal Basis Profile 1.0 and 1.1 Personal Basis Profile (PBP) is essentially Personal Profile, without any but the most primitive Component classes, namely Component, Container, Window, and Frame. As such, and like the low-level MIDP library, this library isnt suitable for writing applications with, although it is perhaps a suitable library to build another library on top of, with its own user interface controls. The 1.1 revision of Personal Basis Profile is currently under development. JSR 209 Advanced Graphics and User Interface JSR 209 intends on supplying Swing, Java 2D Graphics and Imaging, Image I/O, and Input Method Framework to the Personal Profile and Personal Basis Profiles. Obviously this is a fairly large story, and the prerequisite of PBP or PPro rules out all but fairly high-end devices. Gaming/Multimedia related JSRs There are also a set of JSRs that relate to gaming, multi-media, and 2D and 3D graphics. While these JSRs certainly might be useful in pervasive applications, they are not really capable of being the sole user interface mechanism. JSR 134 Java Game Profile JSR 135 Mobile Media API
3 of 5
JSR 178 Mobile Game API JSR 184 Mobile 3D Graphics API JSR 226 Scalable 2D Vector Graphics API
4 of 5
that cell phones, however have neither the horsepower to handle desktop applications, nor can they support desktop semantics. Some of the characteristics of PDAs not accounted for are: applications that consume the entire display; collapsible windows due to soft keyboard popups; desktop integration; automatic screen rotation (portrait->landscape); desktop synchronization. As PDAs become more capable, some of the issues may become moot, however, this also implies that devices such as cell phones will become as capable as PDAs today, and thus they will suffer from the lack of the middletier libraries. Skin-ability These days, everything is skinnable, from your online TV Guide to calculator faceplates. In many cases, this is done purely for fashion, but in some cases, this adds a significant usability advantage to a device. Examples include being able to change the font size to allow us old folks be able to read text on a little device, and being able to change color schemes to allow reading a display under a variety of lighting conditions. Note that skin-ability is typically not provided by a skin library, but is intrinsic to a user interface library itself.
Summary
While the existing J2ME JSRs concerning user interface span an interesting range of devices, from dumb cell phones up through desktop computers, there is a noticeable lack of specifications for mid-level devices. The good news for researchers, developers and entrepreneurs is that there is plenty of low fruit to be picked.
5 of 5