null
Mobile development is a hot topic right now. According to a recent survey by the Gartner group, mobile phone sales will top 1 billion units a year by 2009. Smartphones are expected to account for around a fifth of that number. The Eclipse Embedded Rich Client Platform (eRCP) project aims to let developers write feature rich applications that run with little or no modification across a wide variety of these devices. I recently spoke with two members of the (eRCP) team, Mark Rogalski and Dr. Yu You about the project.

Figure 1. Hello, mobile world.
[Mark] eRCP is the exploration of taking the well established Eclipse RCP model for desktop computing and moving it to the embedded space. When you consider the huge variety of UI factors within the embedded world, it is a real challenge to make a single application work well across this wide a range of devices. We need to consider factors like having no mouse or touch screen; having less than full keyboards, but often additional "soft" keys; having multiple displays of vastly different sizes, etc. The components of eRCP are for the most part sub-sets of existing RCP components: the core runtime, SWT, JFace, Update Manager, and Workbench. We removed desktop oriented function and did work to enable running them on J2ME profiles such as CLDC and CDC. We also built the new SWT Mobile Extensions package specifically to provide support for those special UI features I just mentioned.
Just like RCP, eRCP adheres to OSGi standards for providing a dynamically loadable service platform. We also stick to established Eclipse standards like SWT for UI, Extension Point Framework, etc. with the intension of maintaining upward compatibility to the desktop environment.
Yes, I think because of its advanced UI support, eRCP will enable the development and deployment of a large variety of applications that run across a broad range of devices.
Early on we decided to concentrate first on eSWT because it is probably the key technology in eRCP and can also stand on its own. Now, we have completed this component and would like to get it out into wider use in order to get feedback while we complete the rest of the eRCP components. An important aspect of eSWT is that it is actually provided as two libraries. A Core library which is what we consider the minimum subset of SWT, and an Expanded library which contains some more advanced SWT widgets. This layering extends the reach of eSWT as an embedded UI by allowing new platforms to start with a minimal UI and grow the implementation toward the full eSWT set. Both libraries can be deployed without the rest of eRCP.
SWT Mobile Extensions, which is implemented on top of the eSWT API, is also at Release Candidate 1 level. We've chosen to focus on mobile computing since the volumes and need for compatibility across all those mobile devices is a huge opportunity.
[Yu] IBM, Motorola, and Nokia were the founders of the project. We initially collaborated a great deal to refine requirements and come up with the set of API that would meet those needs. Motorola and Nokia, being the highest level players in the mobile space bring a lot of insight into what worked and didn't work in the past and also have ideas about where the hardware capabilities are headed. IBM brought a great deal of experience with SWT and early versions of eSWT which were contributed to Eclipse for this project. Later on, we decided that each company would produce an eSWT implementation for a platform they were familiar with. The need for intimate knowledge of the native UI that eSWT sits on top of made this the most efficient way to get multiple platforms quickly.
Nokia, for example, began experimenting with advanced UI alternatives two years ago when MIDP 2 phones were first released. They chose to start eSWT because they wanted to a) bring desktop UI compatibility to mobile development, and b) use native phone capabilities as much as possible.

Figure 2. eSWT allows more complex UIs.
[Mark] eRCP brings a whole new deployment model to the embedded space. The eSWT component really brings the next level in UI capabilities over and above MIDP. The application and deployment model shared with desktop RCP brings a lot of synergy between the two environments that has been missing.
Yes, the Personal Profile GUI also has more advanced widget capabilities than MIDP, and in fact eSWT and Personal Profile share some similarities. However, the selection of UI API is dependent on many factors. A key goal of the eRCP project is aligning with Eclipse RCP for desktops. SWT is a key component of RCP and in order to enable upward compatibility and alignment with RCP for desktops, we must focus on an SWT based GUI. Also, eSWT with Mobile Extensions goes a step further with more explicit support for mobile device features like softkeys, multiple displays, and mouse-less navigation. And lastly, eSWT allows us to align more closely with native implementations and their look and feel - a key requirement for the mobile space.
eRCP is the conglomeration of its components, all of which are API subsets of the desktop versions. Some hard choices were made to remove some function in order to make the stack size reasonable for the current generation of mobile devices. Two new components were added. SWT Mobile Extensions, to provide UI features needed on mobile devices, and microXML, to provide much lighter weight XML support (this can be used outside eRCP).
Nothing is automatically shared. However, there is some exchange between desktop and embedded components. For instance, changes which enable the Core Runtime to run on J2ME CDC/Foundation were developed in eRCP and then moved into the main-line desktop code.
First of all, eRCP is a cross-platform solution. MIDP is presently the prime choice for a large number of developers. As you mentioned, Java is used a lot for games and this plays to MIDP's strengths. However, I think the advanced widget support in eSWT will open developers to using Java for a larger variety of application types. The fact that eSWT apps have the same native look and feel as applications written in C++ will mean Java apps can now be more tightly integrated into the device experience. eRCP also brings into play a programming model recognized by a large number of Eclipse developers and delivers an integration model that enables applications to integrate together.
Basically, anything capable of running J2ME CDC/Foundation will run eRCP apps. Anything that can run J2ME CLDC can run stand-alone eSWT apps.
However, eSWT ties directly to the native GUI system. It employs native code to do this and is therefore platform dependent. The other components of eRCP are 100% Java. Thus, you can not run eRCP GUI apps without having a port of eSWT and Mobile Extensions for the target platform. So far, we support Nokia Series 80, WM2003 and Win32, and are considering ports to several other platforms. Of course, as an open source project, anyone can port eSWT to whatever platform they need.
[Yu] Accessing native platform features is one of the primary features of the SWT Mobile Extensions component. For instance, the HyperLink widget directly uses native features to enable dialing or sending mail.


Figure 3. The native controls will be familiar to the users of other applications on the device. Windows Smartphone and Nokia Series 80 are shown.
Usually CLDC Generic Connection Framework should be used. This framework supports all standard connection types defined by JSR 185 (JTWI).
[Mark] IBM's Workplace Client Technology, Micro Edition is another option.
Perhaps the easiest way to get started is by developing and running on the desktop through Eclipse 3.1. Then move your app to target hardware for final testing. We expect that the Eclipse DSDP project will be forthcoming with debugging tools in the future to assist on-device debugging. The Series 80 platform download package includes support for an x86 based emulator.
Maybe. It depends how you develop your app. If you think you'll only want to run your app on one specific device, then it may be easier to hardcode the app for the specific device (i.e. only support one screen of a specific size). In that case, the app should still run on other devices, but may not have an optimal presentation.
However, if you think the app might potentially be used on a variety of devices (a safer bet), then coding the UI using layouts and providing different workbench Views will allow the same binary to run well on many different devices. eRCP includes an eSWT Demo project which is a good reference for seeing how support for different devices is enabled.
This direction is likely to involve some work. You would have to remove any dependencies on API that are not in the eRCP sub-sets. Furthermore, the workbench UI model is not downwardly compatible and would require recoding some of the UI. On the other hand, moving from eRCP to RCP should be very easy since eRCP components are all strict subsets of Eclipse desktop components.

Figure 4. This calendar application takes advantage of the landscape display on the Nokia Series 80.
Loading eRCP itself onto a device is very dependent on the device platform. In general, it's the same as loading any Java application with some JNI code. Developers should look to the Java documentation for the device for help on doing this. We include some very basic instructions as part of our downloads. Once eRCP is installed on the device, the eUpdate component or other OSGi based facilities will provide dynamic download and installation of eRCP apps.
Chances are good that eRCP will be pre-installed on some devices. However, even if it isn't, eRCP installation can be made simpler by providing a custom install package for a device. This step has not been done for development purposes.
Our eSWT 1.0 Release Candidate 1 has just been released. For the rest of this year we will concentrate on completing the other eRCP components with milestone builds coming about once a month. Beyond that, eRCP is a technology project whose long term fate will be decided after measuring the community response to it. At that time it may be folded into existing projects or may become its own top-level project.
Mark Rogalski (IBM Austin) was one of the first dozen people to start up IBM's new "pervasive computing" area about 7 years ago. Since then, he have concentrated on the user interface aspects of embedded computing, most recently on eSWT and SWT Mobile Extensions. Mark is now the development lead for the Eclipse eRCP project.
Dr. Yu You (Nokia) got his Ph.D. in the subject of making people smoothly work together via technologies, including mobile phones. Working at Nokia Research Center, his focus area is UI technologies for mobile phones.
For more information on the eRCP project, see the eRCP home page at eclipse.org. The eRCP forum is also a very useful resource for new developers. Pre-built binaries are available for Nokia Series 80 phones, Windows Smartphones, and Windows desktops (for development). All source code is provided under the EPL open source license.