Engadget’s recent piece, “Mobile OS shootout“, provides a relatively thorough comparison of current smartphone platforms and what they have going for them, mostly from a consumer gadget hound’s point of view. They provide a bunch of nice comparative tables, among them the table “Third Party Development”. From this table we learn that each platform has its own SDK, whereby some of the apps available are considered “native” – a distinction most non-developers won’t be able to grok, since it depends on an understanding of runtime environments, etc. It’s hard to say exactly who this table is targeting, actually; the developer or the end-user that the rest of the article seems to target. Let’s just investigate some of the assumptions it makes.
The table and the accompanying text paints a picture of six different platforms, each an island unto itself with a set of applications developed for that platform alone using the designated SDK. The end-user reading the article comes away with the sense that the iPhone is the phone of choice, if for no other reason than that it clearly has the most apps developed for it.
A developer reading the article, on the other hand, gets the sense that they might as well pick one platform and stick to it, since to get it on more than one platform they’ll have to learn x-many development frameworks and duplicate effort everywhere – an overwhelming prospect. “Which one platform has the biggest payoff in terms of the learning-curve to potential-customer ratio?” they wonder. Once again, there’s a good chance they’ll choose the iPhone, since as everyone knows, iPhone apps are cash cows.
This is, of course, exactly the kind of thinking that Apple encourages. It is also not the only way of thinking out there, not by a long shot.
You see, before Apple came along and blinded everybody with its shiny UI and mega-overpowered marketing campaign, developing for mobile devices was quite a bit more diverse than the “one Apple way” development philosophy may lead you to believe. That diversity hasn’t gone away, and in some ways it’s even increased. Windows Mobile, believe it or not, leads the way in supporting a diverse array of third-party development environments: in addition to apps developed with Microsoft’s SDK, it has always supported Java ME apps, and for a while now it’s supported Flash Lite apps, too. Same exact deal for Symbian phones. All in all the development landscape for the current crop of smartphones, in contrast to Engadget’s portrayal, actually looks like this:
Clearly, the operating systems that offer developers the most choice of development environment are Windows Mobile and Symbian. (Note that Engadget’s labeling of Symbian as having only “Medium” app availability seems rather ridiculous if Java ME and Flash Lite apps are factored in.) Perhaps more importantly, it’s clear that a large portion of smartphone operating systems can be targeted by using either Flash Lite or Java ME (and no complaining about Java ME fidelity/incompatibility issues; all of these smartphone OSes provide top-notch Java implementations). The above table shatters the illusion of the developer at a crossroads, having to pick just one of six OSes to develop for, and having to learn a whole new programming language (Objective C, anyone?) just to do so. As it turns out, apps that run on three or four of the top six smartphone OSes can be written in one shot, and that using tools with which a huge number of developers are already familiar (namely, Flash and Java, and the toolsets surrounding them).
Note that I’ve listed “WebKit” as a development environment even though (to my knowledge) only the iPhone and the Pre’s webOS support web-based apps outside the browser, and that with their own caveats. The main point is that, with minimal changes, four out of six smartphone OSes (including the iPhone) can be targeted with WebKit, and the future of WebKit, and web-based applications in general, looks bright.
Another point of interest is that Qt is likely to become a part of the Symbian stack sooner or later (what with Nokia owning it and whatnot). This is a point in Symbian’s favor, since it currently receives a lot of slack for its antiquated set of APIs, and since getting the same apps to run on Windows Mobile or even mobile Linux devices should be a piece of cake.
Finally, the future of Java ME will largely hinge on the release of JavaFX Mobile, whenever that may come. Right now it has been demoed on Windows Mobile and Android devices, but whether it will run on Android, or even Symbian for that matter, upon release is still up in the air. JavaFX promises to bring Java up to speed with Flash in terms of easy development of fluid, animated apps. The speedy, and ubiquitous, release of the JavaFX Mobile runtime will be key to this success.
To conclude, the takeaway lesson for budding smartphone developers is: Don’t believe the Apple (or the Engadget) hype. There are not, in fact, six separate platforms that you have to learn in order to cover the smartphone market, nor is there a real need to stick with just one platform and forget the others. Flash, Java, and to a lesser extent Silverlight, Qt and WebKit, all provide solutions that cross smartphone OS boundaries and can save development time and headaches.