One of Mobile OSGi’s claims is to reduce the platform fragmentation problem the market increasingly suffers under. Why is that so?
In my opinion, there are two types of fragmentation, "good" fragmentation and "bad" fragmentation. It is natural and desirable that a market with 2 billion subscribers develops a large blend of different needs and preferences. The mobile market must and will continue to serve demand for a diverse range of mobile devices and application. This is "good" fragmentation, the market needs that. Btw, that very reason provides a serious challenge to open platform initiative like LiMo, Android or SymbianFoundation. On the one hand, they attempt to standardize a platform which essentially means to define a common set of functionality which is supposed to be equal on any device. On the other hand they must leave enough room for differentiation and diversification. Finding the right balance is not trivial.
Anyway, “bad” fragmentation is what app developers suffers under every day. The market is faced by heavy fragmentation resulting from
- variety of operating systems (Symbian, various Linux, Android, iPhone, WinMobile,..)
- variety of application execution environments (Java, native, WebApps, Flash,…)
- variety of form factors
Multiply the number of OSes by app execution environments by form factors by number of available versions of all of these components and you’ll understand we’re in hell! If you need wide platform support for your apps, you end up developing them multiple times for the various operating systems and/or execution environments.The form factor and hardware dependent aspect of the fragmentation problem cannot be removed (i.e. different screen sizes, different hardware support options like GPS, NFC, etc.). However, there is lots of room for improvement when it comes to the API layers applications make use of. Certainly, the market does NOT need 15 different mobile Linux platforms with incompatible application APIs. Incompatibilities in Java APIs, i.e. resulting from different implementations or spec misinterpretations, obviously make life harder than it should be. Neither will it be particularly helpful for app developers that very soon there'll be dozens of different Widget runtimes out there...
So, how does Mobile OSGi fit in? In my opinion, Mobile OSGi adds a layer exactly at the right spot: above the OS and around the execution environment. In other words, it encapsulates the many different operating system APIs and thus reduces fragmentation. However, it does not constrain the need for differentiation because it does not urge developers to use one particular app model nor a specific UI. Mobile OSGi adds an incredibly powerful & OS agnostic cross-platform execution runtime for your app's business logic, data and network layers. Mobile Enterprise applications, which typically have lots of code under the hoods of the UI, benefit in particular from OSGi's state-of-the-art component and service architecture (which btw has proved to work incredibly well in many other verticals and I'm convinced it'll conquer market share in mobile as well). Why else would companies like IBM or Sprint build their entire enterprise product portfolio upon Mobile OSGi?
Mobile OSGi can run on any platform that supports CDC Java. I am aware of ports for Nokia S60, Win Mobile, Linux, Android and Brew and more are certainly to come.
To keep a long story short: Mobile OSGi certainly reduces “bad” fragmentation but not at the cost of constraining “good” fragmentation. I am not aware of any other technology on the market that has a similar cross-platform proposition. Are you?