Distilling market noise into market sense

VisionMobile is the leading research company in the app economy and mobile business models. Our research and workshops help clients compete and win in their rapidly changing industries.

Platform X: How cross-platform tools can end the OS wars

[Are cross-platform tools a better solution than HTML5 to the challenges of platform fragmentation? Guest author Jonas Lind reviews the landscape of cross-platform tools and argues that such tools may become as important as the native platforms themselves.]

VisionMobile blog: How cross-platform tools can end the platform wars

The Android vs. iOS vs. Windows Phone platform battle has been the talk of the industry for the last year. But the market share battle between handset platforms might not be as critical for the industry as many believe.

A popular view in the industry is that the market is inevitably moving towards an Apple-Google duopoly. Apple’s app store has more than 400,000 apps. Android is growing quickly from a base of more than 250,000 apps and is predicted to catch up with Apple later this year. Nearly 80 percent of all apps in app stores are controlled by these two market giants according to Distimo. Figures for Q1 2011 from Gartner show that the market share in the smartphone market for iOS and Android combined is 53 percent and rising.

But the duopoly may be challenged by the mobile web and cross-platform tools. HTML5 empowers all other platforms to offer apps through the browser. VisionMobile’s recent Developer Economics report shows that the mobile web (of which HTML5 is a subset) is already the third most popular platform in terms of developer mindshare after Android and iOS.

At the same time, HTML5 is overhyped and the belief that HTML5 will replace almost all native apps is in need of a reality check. Native apps will still offer richer functionality, better performance, and higher security compared to HTML5-based apps. A study by quirksmode.org has shown that every mobile WebKit implementation is slightly different, which could cause a problem for HTML5-based apps. In a recent whitepaper, Netbiscuits measured smartphone support for 18 features in HTML5 and showed that leading smartphones only offer partial (or no) support for a significant number of these features. Implementation is also fragmented. What works on iPhone will probably not work on RIM or Samsung handsets and vice versa. Or to quote Forrester’s take on the HTML5 vs. native debate: “The ‘Apps vs. Internet’ Debate Will Continue…to be irrelevant.”, “it’s not a question of ‘either/or’ when it comes to a choice between apps vs. the mobile Web, but both.”

The Landscape Of Cross-Platform Development Tools

The new types of cross-platform tools are more interesting than plain HTML5 because they can deliver higher performance and functionality than browser based HTML5. These tools produce apps as output and fall roughly into two categories:

1) Web apps/hybrid apps. These apps exploit the web engine (“web browser”) and are typically written in HTML/CSS/JavaScript.

2) Native apps. These apps are compiled into machine code and often written in C++ or similar languages.

Cross-platform tools are a nascent market with a flurry of startup activity over the last few years. The following diagram illustrates different trade-offs between complexity and performance in the cross-platform tools market.

VisionMobile - Cross-platform tools

Traditional websites: In the lower left corner is the traditional website, limited in performance but providing access to all platforms with no added complexity. Plain HTML5 could be included here once all browsers support the standard.

Web apps/hybrid apps: Adjacent in the diagram are HTML5 web apps that can be downloaded to the browser’s cache and run offline. They will offer better performance and only slightly higher complexity. One step up in the diagram is a market segment of cross-platform tools running simulated native. These tools deliver better performance but the complexity is also higher if the tool has to support multiple platforms. Here we find tools that produce web apps built on HTML5/CCS3 and JavaScript, with some added native elements, typically inside a native wrapper. These cross-platform tools often add native extensions that provide access to some low level native functionality. An example of a player in this market segment is PhoneGap, which is often used in tandem with the Sencha Touch framework. Other tools that run on top of PhoneGap are WorkLight and appMobi.

A closely related market segment is hybrid tools, where the HTML5/JavaScript input is translated into actual native source code. An example of a hybrid tool vendor is Appcelerator‘sTitanium.

Other types of solutions which fall under the main heading of web/hybrid apps are based on Java, Lua, ActionScript or less common languages. The diagram shows how the heavily-fragmented Java ME offers inferior performance in spite of high complexity. The cross-platform tools Corona SDK and DragonRAD are based on Lua. Rhodes is based on HTML/Ruby while OpenPlug uses ActionScript (Flash) as source language. Kony uses drag-n-drop for building enterprise web apps. There is no reliable information about the performance/complexity trade-off for most of these solutions, so their exact position in the diagram above should be viewed as illustrative. In general, tools in which the resulting code is compiled or recompiled to native ARM machine code will have a higher performance.

Native apps: The second main category is native apps. In cross-platform tools for native apps, developers often work with a codebase in C/C++ or C# which is then semi-automatically ported to the target platform and device. Performance is significantly higher with native code, but so is the complexity. Players in this sector include Airplay, Qt and MoSync. The Airplay SDK (now Marmalade) originates in 3D gaming but can also be used as a general C++ cross-platform tool. Qt is a cross-platform UI framework that also can be used for native C++ porting. Qt primarily supports Nokia’s legacy platforms. MoSync is a cross-platform tool for general purpose C++ development, integrated with the Eclipse IDE and also available under an open source (GPL) license.

Cross-Platform Beyond Java – Native Extensions

The traditional approach to cross-platform development has been a lowest common denominator one – much like that taken by Java, Flash Lite and mobile HTML. This approach sacrifices performance, UI pizzazz and access to specific device features.

A workaround is to add native extensions. These can provide additional SDK/NDK libraries for the IDE and also give access to low level hardware functionality. Access to low-level hardware functionality can be managed by a device database that controls which conditional code will be executed on a given device.

Several of the cross-platform vendors have built such device databases with various levels of detail. A device database contains information on screen size, input modality and exact OS version, extending to detailed hardware configurations and known bugs with workarounds.

Using native extensions, it is possible to overcome the inherent limitations that plagued Java. Instead of “write once, run everywhere”, developers can spend 90 percent of their time developing a common codebase and 10 percent adding native tweaks and extensions for each platform and device. For software purists, the 90/10 solution might not seem very elegant, but it is a way forward that can handle the incredible complexity with thousands of devices running more than five OS platforms. In this way, app developers can manage one codebase and port it to target devices without losing functionality. In principle, using a (C++) cross-platform engine with extensions should be able to offer similar functionality with minimal performance penalty as compared to direct development for the target device. There will be significant economies of scale when the common codebase is tweaked for 100s of devices.

The Disruptive Potential Of Cross-Platform

There are few signs that platform fragmentation will disappear. It’s not just Android, iOS and Windows Phone 7, which are backed by corporate giants with deep pockets, but also smaller players like QNX (RIM), WebOS (HP), MeeGo (Intel, China Mobile) and Bada (Samsung). Add to that legacy platforms, which will be around for at least a few years: Windows Mobile, Blackberry OS, Symbian, BREW, Java ME and Flash. If we also include the main desktop platforms (Windows, Mac OS, Ubuntu), gaming consoles, set-top boxes, cars, and other gadgets, the number of platforms becomes unmanageable.

App developers whose clients need to reach the entire market, face the formidable task of supporting all platforms and devices. If they can use a cross-platform engine the productivity gains will be dramatic compared to paying for separate in-house dev teams for each platform.

Early adopters of cross-platform will most likely be large consumer businesses who need to target the mass market such as media companies, games houses, entertainment companies, banks, and any brand developing B2C apps. Similarly, government agencies are often required to provide non-discriminatory access to their services and cross-platform tools will enable them to do just that. Another group of early adopters of cross-platform tools is CIOs of larger corporations. They face increasing demand from senior staff who want to use their favorite smartphone for secure access of internal company data. Once these early adopters have driven down the prices and sorted out stability issues we should expect to see a fast uptake of cross-platform tools in the mainstream app development market.

Assuming more developers move to cross-platform tools, the power distribution in the mobile sector will be challenged. The difference in the number of available apps between dominant and up-n-coming platforms will be reduced. This will allow smaller platforms to compete on a level playing field.

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. This is possible if the cross-platform engines can fully integrate native platform and device extensions. In that case, developers of native apps might reconsider Android, iOS and WP7 and choose to code to a cross-platform IDE, not to the platform. In this scenario, the cross-platform IDEs would become players of equal or even greater importance than the native platforms. At the very least, today’s OS platform wars will move to a totally different level.

Jonas Lind

[Jonas Lind has been working in the TMT sector since the late 1990s. Among other things, he has worked as an industry analyst for TeliaSonera HQ, with trend forecasting and scenarios in a project commissioned by Ericsson Research, as a strategy consultant during the dot com bubble and with femtocell concept development. He runs the blog Mobileforsight and is currently a strategy analyst at the seed stage VC fund STING Capital.]

  • http://blog.radvision.com/voipsurvivor/ Tsahi Levent-Levi

    Cross platform tools themselves have a huge problem when selecting the input language, as different mobile platforms allow for a smaller set of languages to run: Android allows C/C++/Java, iOS goes for Objective-C, RIM's platform is Java and Windows Phone 7 opted for C#.
    This means that a cross platform tool has to convert one language to another to be successful in targeting multiple platforms, and this in turn will sacrifice functionality.

    • http://www.mobileforesight.com/ Jonas Lind

      The native X-platform tools typically allow input in standard C++ and then perform some wizardry that produces output targeted for iOS, Android, WP7 etc. There are three approaches: direct source-2-source translation; translating the source code into an intermediate abstract language before translating to source code for the target platform; direct compilation into the target platform’s binary. If this is done well the performance/functionality penalty should be small.

    • http://twitter.com/DevDocDude @DevDocDude

      I agree with Jonas that language choice is not the limiting factor. For example, the Particle SDK <a href="http:// (www.particlecode.com)” target=”_blank”> <a href="http://(www.particlecode.com)” target=”_blank”>(www.particlecode.com) lets developers write in Java or ActionScript, and translates into C++ for iOS and webOS, C# for WP7, and so on.

      Functionality gaps are more likely to exist when one platform is completely missing a feature (such as sockets in the initial releases of WP7). In some cases cross-platform tools can help fill these gaps, in other cases not.

      Another factor no one has mentioned goes beyond programming language: different screen sizes, screen densities, input devices and interaction styles present real challenges to addressing multiple devices with a single codebase. A good cross-platform toolkit should provide tools to help developers manage this fragmentation.

  • Gorkem

    It'd be more appropriate to put lua based solutions under the native category, rather than hybrid since they generate native code and do not include a browser acting like a container.

    Gideros Studio is another example to this. It includes an IDE and a SDK to build platform independent code <a href="http:// (www.giderosmobile.com)” target=”_blank”> <a href="http://(www.giderosmobile.com)” target=”_blank”>(www.giderosmobile.com).

    • http://www.mobileforesight.com/ Jonas Lind

      I would not put Lua based tools under native tools. The most common definition of the native category is that native tools are defined by using C++ as input. Thanks for the info about Gideros, which I missed.

  • Jason

    There are many more native cross platform IDEs not mentioned. Check out the Mobile Enterprise Application Platform (MEAP) and Mobile Consumer Application Platform (MCAP) reports from Gartner that can be found here on Antenna Software's site: http://www.antennasoftware.com/Gartner2011/defaul… and http://www.antennasoftware.com/Gartner-MCAP-2011/

  • ODA

    Excellent post :-)

  • http://www.holisticware.net moljac

    Hi

    Nice post, but I'm wondering why Mono and its derivatives was not mentioned as one possiblity for multitargeting and platform portability… OK, programming for Linux, Android and iOS it is still not as good as for Microsoft platforms, but it is possible.

    thx and regards
    mel

  • Markus

    Interesting piece of research! Perhaps one missing perspective: The rise of mobile virtual machines as another pillar of cross-platformization…

  • http://mercadder.com mercadder

    Native apps and HTML5 webapps is the only future I could see, incliding Java running in JavaScript.

    But software that translate between platforms will be impossible because the OS is the core of each business, the fight here isn't about functionality, it's about mindshare.

    Thank you for this compilation.

  • http://twitter.com/AjitJaokar @AjitJaokar

    Good summary .. but most of this discussion is now pretty mature ..

    Tom Hume posted some interesting ideas on this theme at his blog as well .. http://www.tomhume.org/2011/06/why-the-web-wont-d

    however, when you say the below .. what prevents C++ cross platform IDEs from offering same performance? – I think the question is more political than technological ie cross platform IDEs may exist but the access to APIs and functionality is a business/security/access issue –

    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. This is possible if the cross-platform engines can fully integrate native platform and device extensions. In that case, developers of native apps might reconsider Android, iOS and WP7 and choose to code to a cross-platform IDE, not to the platform. In this scenario, the cross-platform IDEs would become players of equal or even greater importance than the native platforms. At the very least, today’s OS platform wars will move to a totally different level.

  • http://developer.openplug.com Guilhem Ensuque

    Hi Jonas

    Nice post. To second some of the other commenters, I would have created a 3rd category in between solutions that generate web apps wrapped in native packages (like appMobi, PhoneGap, Worklight) and full native solutions (Qt, MoSync, Marmalade).

    This 3rd category regroups solutions like OpenPlug (disclaimer: I am the product manager of that one), Titanium, MonoTouch, Corona. These solutions allow to code in a high-level productive language (e.g. ActionScript, JavaScript, C# or Lua) and yet benefit from native user experience and performance, which the first category do not allow.

    Indeed some drawbacks of wrapped web apps are that native User eXperience has to be emulated with frameworks like Sencha, performance relies on the underlying browser runtime (webkit implementation variants), amongst others.

    I like your calling out of native extensions, this is an underhyped feature provided by some cross-platform solutions (e.g. Phonegap or OpenPlug)

    For a take on a comparison between solutions, readers may want to look at an analysis / comparison I did for the GlueCon conference: http://www.slideshare.net/gensuque/gluecon11-nati

    • http://www.mobileforesight.com/ Jonas Lind

      I have separated web apps and hybrid apps in the text even though they are grouped together in the diagram. The reason is that the terminology is not clear and I have come across definitions that are partly overlapping and sometimes conflicting.

  • http://www.mobileforesight.com/ Jonas Lind

    Thanks for all the comments. The article is not a product review and I have not evaluated all of the nearly 40 products on the market that claim to be X-platform tools. The intention of this blog post is rather to look at the big picture and to point out the disruptive potential X-platform tools can cause.

    The tools I have mentioned are a subjective selection based on a combination of perceived traction, visibility, and the need to find illustrative examples of the different technical solutions. Initially I considered not mentioning vendors at all but realised that it would make it too abstract.

  • Just this guy

    How is there no mention of Adobe AIR in this article?

    • gki

      Agree! It is not a complete study…missing one of the main actor for cross platform development…

  • chaojili

    cross platform tools can only benefit certain types of apps, and at the end of the day it is also much harder to debug. To make it worse, if your targeted platforms doesn't support your primary language, then cross platform tools is useless. For example, wp7 doesn't take code in c/cpp (a stupid decision from MS). How can you expect the tools to translate c/cpp to C#?

    In my opinion the most valuable thing is the ideas behind the code, not getting the code written. If you are worrying about porting code, then worry about the app first.

    • http://www.mobileforesight.com/ Jonas Lind

      I think this is a misunderstanding. The innovative contribution from cross-platform engines is that they can cross-compile and transform the codebase into code for the various target platforms. The three approaches for cross-compiling are: Direct source to source translation, translating the source code into an abstract low-level intermediate language that is transformed into source code for the target platform, and direct compilation into the target platform binary.

      • chaojili

        I think it is the the third approach I was talking about. The first one is simply impossible due to the complexity in practice; the second one, I don't know anything in this category exists; The third one is the ideal one, you're writing code with SDKs provided by third party, and they take care of ugly details in various platforms and even can compile your code into the target binary. There could be successful SDKs to meet the requirement of certain types of apps, but IMO no one could provide a universal SDK powerful enough to "end OS wars".

  • http://twitter.com/BrunoFonzi @BrunoFonzi

    I believe haXe is a real valid option for cross platform development, it covers HTML5, Flash and Native! More on http://haxe.org/doc/intro

  • tough opinion

    How could someone with so little practical experience with these tools be able to summarize the cross platform correctly. There are technologies missing, the groups could be much better defined, the opinions are superficial.
    This looks like the author has been studying the subject by reading articles on the internet, rather than talking to companies using these technologies.
    I think this article deserves a rewrite.

    • Andreas Constantinou

      Can you suggest what technologies are missing and how the groups can be better defined?

  • Developer in Sweden

    Jonas works at sting, which is the first round investor of Mosync. So the article is not objective at all

    • Andreas Constantinou

      That is true (and we should have added a full disclosure). But in what way is the article biased in favour of Mosync?

      Andreas

  • http://www.developmobileapp.com/iphone-application-development.html iPhone Development

    its really good to know how this Post is convincing people to emphasize on Cross-platform tools to develop games and app. It would be so easy and up to the reach for every OS user to take use of all the apps & games from all the OS that get manufactured for a single or some particular OS…

  • http://www.karyatech.com Nicholas sparks

    Thanks for the post. But this post did not mention the disadvantages of the cross platform tools. I don't think the cross platform tool provides each and every app without bug. I prefer to use mobile solutions provider like karyatech.com for this issue.

VISIONMOBILE BLOG

Distilling market noise into market sense

The 3 key Apple Watch features that nobody talks about. Yet.

apple-watch-09

If Apple wants to create a new, large product category out of smart watches, it must empower developers to discover…

Continue reading ...

Uber API launch validates the “Gurley scenario”

Uber API

[With the release of Uber’s API, their ploy to achieve world domination has just gotten a lot more probable. Uber…

Continue reading ...

Will developers stop playing the app lottery?

illu

[How long will developers be loyal to ecosystems that seemingly set them up for failure? The odds are clearly stacked…

Continue reading ...

VISIONMOBILE STRATEGY

Workshops & research on Developer-centric Business Models

Apps for connected cars? Your mileage may vary

Automotive-report_illustration_web

Car makers are now entering unfamiliar territory as some of their latest product innovations have nothing to do with driving.…

Continue reading ...

M2M Ecosystem Recipe

M2M-Ecosystem

M2M is rapidly approaching a tipping point. Lower technological barriers pave the way for new entrants in the market. As…

Continue reading ...

Mobile Innovation Economics

profit recipe

Mobile Innovation Economics is a strategy workshop focused on business models and asymmetric competition of mobile ecosystems. Mobile ecosystems are…

Continue reading ...

VISIONMOBILE RESEARCH

Research on the app economy and developer ecosystems

App Profits and Costs

AppProfits

This research report examines the critical success factors for a profitable app, and how business and technology choices, such as…

Continue reading ...

Developer Segmentation 2013

Developer Segmentation 2013

The Developer Segmentation 2013 report delivers a needs-based segmentation model that actually works, with extensive profiling of the eight principle…

Continue reading ...

App Economy Forecasts 2013-2016

App Economy Forecasts

This report investigates the relative sizes of the app economy: developer population by region and platform, distribution of revenues, revenue…

Continue reading ...