Mobile devices are today's development battleground. Timing is everything: I recall Borland's 2003 conference when it introduced an extensive mobile development strategy based on the ill-fated C++ BuilderX, with SDKs from Nokia and Symbian. The sessions drew sparse attendance and Borland later abandoned the product, returning to the Windows-oriented C++ Builder.
So what changed? In part, devices have become more powerful and mobile internet access faster and more pervasive, making the platform more attractive. A bigger factor though is Apple's iPhone. In hindsight, the mobile vendors and operators made mobile development too difficult, with fragmented platforms and locked-down devices. Microsoft has had some success extending Windows to mobile devices, for enterprise development in either C++ or .NET, but its market share is too small, the devices insufficiently well liked, and the deployment obstacles too great. Java had some success too, but write-once, run anywhere never really worked for mobile.
Enter iPhone, with a single platform and easy deployment through the App Store. The "easy deployment" part has to be qualified, since developers have been confronted with limited access to the device, restrictions on what they can develop, and an opaque approval process; but it has worked, and the potential of the mobile platform - about which we have known for years - is now being unlocked.
Other vendors are belatedly rising to the challenge. I'm just back from Nokia's Qt Developer Days, and saw the energy the company is putting into creating a cross-platform, open source mobile development framework. Windows Mobile, Maemo and Symbian are on the immediate roadmap. On the deployment side, Nokia has the Ovi store. I've also been at Adobe's MAX in Los Angeles, where broad mobile support for the Flash runtime was the big story. The Flash runtime is not coming to iPhone yet, but Adobe has a native compiler for Flash applications which targets iPhone. Adobe also has app store plans. Google Android is another platform where all the pieces are in place, and Palm Web OS a new hopeful on the scene.
This means developers now have numerous choices for mobile development, as well as more pressure to create or extend applications to embrace mobile clients. It is not an easy choice. An AJAX application will work on the iPhone and elsewhere, but there is no offline support or access to device features, and the capabilities of mobile browsers vary greatly - though Webkit is becoming a standard on non-Windows devices. Native iPhone works great on Apple's device, but nowhere else. Flash is becoming interesting, but devices with 10.1 will not be around until next year and it is an unproven platform in a mobile context. Windows Mobile will trudge on, though Microsoft's mobile story seems particularly incoherent at present and I expect declining market share. Java on mobile has not gone away either; and Google Android is pretty much a Java platform. C++ will always be attractive for lean, fast applications.
It is fun to pick winners and losers, but impossible to tell how all this will shake out. Here's two safe bets. The first is that mobile, internet-connected applications are in many ways the future of the client. The second is that focusing on a strong web services API (of whatever flavour) is the right place to start. What's your mobile strategy?
Listed below are links to blogs that reference this entry: What's your choice in the mobile battleground?.
TrackBack URL for this entry: http://www.itjoblog.co.uk/blogadmin/mt-tb.cgi/121
You are forgetting RIM BlackBerry, which is also a Java platform.
One interesting thing for me is how JME fell off everybody's radar, despite the fact that it is still the dominant platform by far. I think that its main two problems were not fragmentation, but under-powered API and the signing/certification obstacle.
My bets are still on mobile Java, but I am not quite sure how exactly the next-generation Java-based platforms are going to develop. Most unclear to me are Nokia and Sun. Android broke their stranglehold on mobile Java and is showing how it has to be done. It is definitely going to be my next platform of choice.
Considering the investment Nokia has made in JME I don't think they'll drop Java from the future open-source Symbian. Moreover if they want to create a unified platform for Symbian and Maemo they need Java in addition to Qt to achieve that. It will be interesting to see how exactly are they going to include a JVM, though. Will they follow Google's lead and use an non-certified JVM or get Sun/Oracle to release a free open source version.
I think Sun's original plan to charge for their mobile JVM with the promise of WORA is doomed. Device makers are pressed to innovate fast and differentiate and standards don't work well here. If Sun/Oracle want to remain relevant in that space and push successfully JavaFX, they have to make it open source ASAP and bring versions for Android and Symbian in addition to their Windows and Linux versions. I hope to see JavaFX succeed, but they have to act fast - 2010 is going to be a decisive year in the mobile space and if they don't make their strategy clear and the platform available, they risk to become irrelevant.
Tim, excellent post. What do you think of Appcelerator's Titanium for mobile development?