The Next Evolution of Mobile Apps: Cross Platform

17/09/2012

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…

Add to that the variance in API levels of Android, screen resolutions and screen rations and you’ve got enough of a headache. But then there’s the iPhones and iPads (old and new).

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:

  1. Develop natively on each platform
  2. Develop using HTML5 and wrap it up as an app (or leave it on the web)
  3. Hybrid

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.

Responses

Lennie says:
September 17, 2012

These questions have been asked and asked again. The only cross platform solution currently seems to be HTML5 and it will get better supported and more performant.

If (!) WebRTC gets wide support then I would expect projects that would want to do something similair to at least use (a) webview for that instead of dealing with the underlying APIs (if they are available at all).

Reply
    Tsahi Levent-Levi says:
    September 17, 2012

    While that might be true, HTML5 hasn’t made that much of an impression – it is slow on most mobile platforms and is inferior to native development. I am all for HTML5, but it just doesn’t seem the solution right now to some of the problems.

    As for WebRTC – on mobile I see it more as a media engine wrapped in C++ or Java interface than a Java Script one for the next year or two. The app delivery model on mobile works better at the moment.

    Reply
Yossi Cohen says:
September 18, 2012

As for the development approaches for mobile, I think there are basically these three: native, web (slightly different than what is described in the article – and Hybrid. I think for some apps. going native is still the best way to go and only this argument deserves a whole article :). Html5 is still very promising but needs to be handled with extra care especially in regards to ‘lowest common dominator’. ‘lowest’ is often ‘lower’ than most people think.

Reply
larissavictorian says:
September 28, 2012

Really Android device & developers are having a hard time focusing there on phones. Android evelopment will get the best results. It is what the operating system vendor is using & focuses.
All modern web browsers support HTML5 can be seen as the lowest common denominator, so if the app doesn’t need any special attention, then this is probably the way to go.

Reply
    Tsahi Levent-Levi says:
    September 29, 2012

    The problem with HTML5 is that it isn’t that easy to program with at the moment.
    It takes a hell of a lot of expertise and know how – see the link I’ve given Yossi in the comment above – there are some useful insights there.

    Reply
Alexander says:
October 4, 2012

Good article!

This is something we at Service2Media work with on a daily basis and have a lot of experience with.
We see the fragmentation as a big problem for companies trying to reach their potential and existing customers on their mobile devices.

We therefor put a lot of effort into our App Lifecycle Platform which enables you to design and develop once, but deploy on multiple devices. We incorporate native APIs and SDKs which gives the apps excellent look and feel, as well as supporting all the major operating systems such as iOS, Android, BlackBerry, Windows Phone and Symbian.

There’s a lot of talk regarding HTML5, we agree that it can solve some problems, but the actual app usually does not live up to the expectations.
We did a comparison between Youtube’s HTML5 app and Native app.
Here’s the result: http://www.service2media.com/blog/comparing-the-youtube-html5-web-app-and-the-youtube-native-ap/

Definitely worht a look!
Kind regards

Reply
    Tsahi Levent-Levi says:
    October 10, 2012

    Alexander,

    That’s really interesting – good to see such a side by side comparison.

    Thanks for sharing!

    Reply

Comment