Tuesday, June 23, 2009

Update on OSGi for Android

In Nov 2007 folks from Luminis managed to port OSGi onto Android, or more precisely, onto what was called Android back then. Meanwhile most framework providers have gone ahead and ported their implementations to Android as well. However, as I argue in an earlier post, refer to Mobile OSGi on Android, I see little value in just porting OSGi. The value comes from integrating OSGi with Android. OSGi must be understood as a complementary platform, not a competing technology and that approach requires a good level of integration between the two.

Pursuing the goal to create a value adding OSGi based stack for Android, ProSyst recently releases the first version of the stack. It works on all Android 1.5 (Cupcake) compliant devices. Here's is the list of supported features from the Release Notes:
  • Compliant to specifications OSGi Core 4.1 and OSGi Mobile 4.0 (JSR232)

  • Java Security enabled and integration between OSGi and Android security policy frameworks

  • Support for w3c & Opera based Web Widgets
    • Web widgets run in WebKit browser-based viewer
    • Installation and security verification of Widgets executed through OSGi

  • Server in Your Pocket & RMA (Richt MobileNet Application)
    • Local web server functionality, pretty much the same thing as Opera Unite (will blog about that one soon)
    • Automated translation of OSGi services into local JSON based web services (provides Web Widgets access to platform capabilities like Messaging, Location, etc. You can also write your own OSGi services in Java and provide access to that functionality to your web widgets)
    • JavaScript Convinience Library for finding, binding and using OSGi services within the browser

  • Integration of Android Intents with OSGi Event Admin (bi-directional exchange of events/intends)

  • Access to OSGi Services through Android IDL (enables Android developers to leverage OSGi services)

  • Access to Android APIs from within OSGi

  • OSGi runtime lifecycle management: User can select different OSGi runtime modes (Always On, Always Off, On if OSGi content installed)

  • Content Management User Interface
    • Listing OSGi content packages
    • Installing content from SDCard
    • Unistallation of content

  • Installation of OSGi Content through WebKit Browser

  • Full mobile device management support
    • OMA-DM 1.2 based remote management interface
    • All OSGi defined Management Objects: Configuration, Application, Logging, Monitoring, Policy
    • Sotware Component Management Object (SCOMO): Remote management of Android APK packages, OSGi Bundles, OSGi Deployment Packages, Widgets (push-install, update, uninstall)

This is pretty much as much as you can get from it right now. Features coming in future releases are:
  • Support for Bundle App Model (so that you can write bundles that use the native Android UI APIs. To do this properly an integration with the OSGi Application Admin is required)

  • Connectivity between OSGi runtime in Android with Eclipse IDE based OSGi Development Tools

  • Extend the OMA-DM device management tree by the Lock&Wipe Management Object (LAWMO), which enables enterprises to remotely wipe lost or stolen phones.

  • Enabler OSGi Service APIs & JavaScript for accessing phone featuers like Camera, PIM, Messaging, etc.

The stack is available for side-load as well as pre-load (for OEMs who decide to pre-integrate it on their devices). In fact, the Lock&Wipe and Android Package push deployment featuers require the stack to be signed by the OEM.

I hope this solution as well as the work of other OSGi community members (i.e. EZDroid) will help drive adoption of OSGi on Android.

Jo