Cross-Platform Mobile Development
There are a great deal of cross-platform mobile development frameworks around. The major platforms, all mutually incompatible, are:
- iOS (iPhone, iPad & iPod Touch)
- Windows Mobile
- Windows Phone 7
- MeeGo (merger of Maemo and Moblin)
There also exist many different mobile development frameworks that support various arrays of smartphone platforms, including but not limited to:
Qt is a great framework for cross platform desktop application development, and takes care of several mobile platforms - Windows Mobile, Symbian, MeeGo. There are community ports for iOS and Android (and webOS?). Blackberry and WP7 are on their own for now.
MoSync also looks quite good, supporting a great number of platforms, including Java-based ones, from C++. However it's not very well known AFAIK and has its own issues.
So my question is: is there ANY cross-platform mobile development framework actually worth using? Every one I've found has one disadvantage or the other that makes it unsuitable for use.
At least if Qt supported iOS and Android you'd need at most three versions of an app to support all platforms (Qt, Blackberry and WP7). The community ports that are around are not well supported at all though, and are far from complete. Plus, even if they are completed, would Nokia ever support them anyways or would that be seen as a bad business strategy?
Should I just bite the bullet and write native ports for each smartphone platform? Qt + iOS + Android + WP7 + Blackberry + webOS? 5-6 versions of an application is quite a lot to maintain, but the solutions for cross-platform development on smartphones don't look that great right now.
UPDATE By popular request, a link to the Qt 5.2 release's Android support page, as it's now officially integrated and "production-ready".
Well, Qt can support Android, via the freshly integrated internal Lighthouse project and the works of an individual developer, who will probably be busy integrating his code in the Qt codebase:
Expect to see Qt 4.8 with Android support through Lighthouse.
iOS has a similar drive behind it, but the projects are only starting:
Lighthouse provides a tiny abstraction layer for the gui/core operations of Qt, providing a very easy way of porting the framework.
Another open source cross-platform framework Kivy
You can find almost every tool for Cross Platform Development here - http://www.riaxe.com/blog/top-cross-platform-mobile-development-tools/
Blackberry now supports QT, so you will only need to write two versions. See http://press.rim.com/release.jsp?id=5230
Last night I attended a presentation by the Hyves dev team on their cross-platform mobile app. Some graphically intensive features (animated smileys, it's a social website after all) are disabled on slower platforms. They use Phonegap to fill in the gaps.
This is obviously a subjective question - you're asking us to guess at Nokia'a business strategy.
However, my own personal guess is that Nokia won't port Qt to the iOS, but the community will (in fact, the work has already started). I suspect that a port to android is much easier than a port to iOS, and will happen soon enough.
But then again, that's just a guess.
Why not put your energy into helping port Qt to these new platforms?
There's some that are missing from your list which possibly deserve a mention ... JUCE, Corona and Moai. All of these support iOS and Android. Corona is mainly for games but is pushing into the general app area as well - and it has a very active community. Moai is mainly for games and interactive graphics. Moai and Corona are designed for Lua scripting. JUCE is an elegant and well structured C++ based cross platform UI library.