
I'm also getting ready to evaluate the Eclipse Embedded Rich Client Platform (eRCP) as a mobile application framework, and I'd like to explain both my interest and my concerns. First a little background about eRCP.
What is Eclipse eRCP?
eRCP is a trimmed down version of the plug-in architecture, "workbench" and UI libraries that form the framework of Eclipse. As such it runs in a Java environment on a mobile device and uses a similarly trimmed down version of SWT to produce user interfaces with native widgets. On Windows Mobile it's indistinguishable in look and feel from a .NET Compact Framework app and on Symbian Series 80 it's indistinguishable from a native S80 app. eRCP requires a J2ME CDC environment since it uses JNI, Java reflection and custom classloaders that are not possible in the vastly more common CLDC/MIDP environments. That means it won't run on Palm OS, BlackBerry OS, or Nokia S60 devices (not yet anyway). But it's also a much more powerful environment than MIDP.
What's exciting about having Eclipse on your phone?
Keep in mind we're not talking about running the Eclipse IDE on a mobile device. But you have most of the things that have made Eclipse spread like wildfire through the software developer communities:
- a component architecture (OSGi) that enables plug-ins to be uploaded, updated and installed on the fly
- a system of extension points that allow plug-ins to contribute features to existing plug-ins without a recompile
- light-weight, cross-platform native GUIs
- open source SDK and tools
I enjoy developing with SWT and JFace and the fact that I can leverage those same skills--and even some existing code--in my mobile application development is attractive. But for me, 90% of what makes eRCP interesting is that it implements OSGi. OSGi can be thought of as a container for Java clients much like Java application servers are containers for web applications: it's what gives Eclipse this amazing and flexible component model. OSGi is what allows Eclipse to be a true "smart client" with a rich, native interface but the easy remote management that IT guys usually expect only from a web application. The difficulty of deploying, administering, and updating devices in the field causes a lot of push back in IT departments that are considering mobile solutions. Many try to settle for WAP browser applications to avoid the hassles, but the poor user experience of a web application on a mobile has dampened interest in server-side mobile solutions. I think eRCP (and other OSGi implementations like ProSyst and Knopflerfish) offer a vision of mobile computing that is much more open and dynamic than anything we have seen with J2ME or even native APIs.
So what's the downside?
Ok, first I want to remind you that I have yet to actually evaluate eRCP, so the concerns I express here are more from what I know about mobile software development in general and the Eclipse SDK more specifically, not from any actual testing. But there's no doubt that eRCP requires mobile phones or PDAs that are high end: they need enough memory and processor cycles to drive a Java environment that is much fuller featured than what is on 95% of the mobile phones today. That means a smartphone OS like Windows Mobile, Symbian S80, or embedded Linux and a pricey PDA or PDA-phone that adds a lot to the cost of a mobile deployment. Having spent a lot of time reading, patching, and adding new features to JFace over the last year, I can guess that it's not just OSGi's requirements for JNI and custom classloading that force the use of high-end hardware. It's also the fact that the APIs and implementation code the eRCP team are starting with were never written with resource-constrained devices in mind. The team is trying to keep the main packages of eRCP, eJFace, and eSWT as strict subsets of their desktop GUI counterparts. I can understand why they'd like to do this, but as Microsoft has learned the hard way, PC software is not necessarily a good foundation on which to build mobile software, no matter how much you try to trim and optimize.
I will be delighted to learn I am wrong about this. I was eyeing a Nokia 9300 smartphone at the Cingular store today and thinking that it would make an interesting test device for eRCP. Sure, it's a high-end S80 handset, but it also runs an OMAP processor with a mere 150MHz clock speed. Nokia has been one of the companies (along with IBM and Motorola) that have contributed resources and developers to the eRCP project, so it should be a fair test of the platform to see how it runs on a slow processor like the OMAP 1510. OSGi has been given the impression that Nokia will release a phone with OSGi baked in Real Soon Now. Future S60 phones are supposed to have CDC Personal Profile Java environments in them, so perhaps we will see this powerful framework on some lower cost mass-market devices before long.
eRCP is at version M9 right now, so the 1.0 release shouldn't be far off. They've just added the Update Manager feature, which delivers most of the function of the desktop Update Manager in the Eclipse IDE. That's where things are starting to get interesting. So when I'm past my huge deadlines I'll be giving it a look.
______
* Both of the projects I'm working on involve mobile device software as well: Pampered Chef is still in a requirements-gathering stage, but EpiSurveyor is really a rapid application development platform for PDA data collection applications.
Comments
Add Comment