The iPhone 5 is out. So are the Kindle Fire HD and the Lumia. How are you going to develop for them all?
Fanboys love bashing Android and one of their main points is fragmentation: how bad the integration between software and hardware is on an Android device and how developers are having a hard time focusing there on phones. It gets worse.
The best source of how bad (and good) things are on Android can probably be found on OpenSignalMaps blog.
These guys have logged information from over half a million phones over a period of 6 months and visualized it all. That was a few months ago, but things haven’t changed a lot in terms of the variability.
Go to the link above to get the visualization – I’ve decided to show off here only the phone models map – 3997 of them…
Microsoft or RIM may join the game in 2013, making things a bit more complex for developers.
And there’s Mozilla’s Boot to Gecko – a project of making a Firefox OS for mobile, backed by the telcos – simply because it takes control from app stores and brings it back to them.
If you are planning on writing an app, there’s a lot of headache involved:
- Which operating system to target?
- Which versions of the operating systems to support?
- Which phone brands and models to focus on?
- What language to use?
The first 3 are an issue for marketing to deal with. The end result will be a long list of devices – marketing will want the largest footprint, and developers will need to find ways to comply.
There are essentially three approaches out there for mobile development:
- Develop natively on each platform
- Develop using HTML5 and wrap it up as an app (or leave it on the web)
Native development will get the best results: it is what the operating system vendor is using and focuses on. HTML5 can be seen as the lowest common denominator – all modern web browsers support it, so if the app doesn’t need any special attention, then this is probably the way to go. The hybrid model means using both native and HTML5 code within the application – HTML5 to get at least some code to work across operating systems and native code to get the quirks of each operating system nailed down.
This have brought with it a slew of cross platform tools that you can use to develop and deploy applications on multiple mobile platforms. A year ago, Jonas Lind analyzed the market of these tools on Vision Mobile. In his summary, he made the following statement:
Web apps and HTML5 should make the largest dent in the market power of traditional platforms. But the final nail in the coffin will come when C++ cross-platform engines can offer almost the same performance and functionality as coding directly on the target platform.
It seems like there’s another option these days, which is to focus on Java – at least if you want your apps to run on both Android and iOS. Simon Judge just reported on a new tool from Google that converts Java to Objective-C (=Android to iOS):
the gains will not just be in the initial translation/port but more importantly in subsequent maintenance where it will be much easier to keep the iOS and Android apps in sync.
Provided in source code with a rather permissive Apache license leads me to believe that this will find its way to some of the cross platform tools out there. It has a compelling value proposition: instead of writing the code in a scripting language of an arbitrary tool, or using HTML5 with Java Script (with all of its disadvantages), you can write the business logic of your application once in stable Java code – and use it anywhere you want.
Cross platform tools have just become much more interesting.