Cross Platform Beats Native When Done Right
The Java Zone is brought to you in partnership with ZeroTurnaround. Check out this 8-step guide to see how you can increase your productivity by skipping slow application redeploys and by implementing application profiling, as you code!
He has a point. Most developers look at Cross Platform tools as a means of saving money and cut corners when using them. Resulting in lower ratings and low quality apps.
However, there are great cross platform apps e.g. Music Cloud (LWUIT/Codename One based), Waze & Telmap (LWUIT 1.2, a pretty old version).
I won't talk about the frameworks Juhani mentioned, since I would tend to agree that they all fall into 1 of two categories: HTML or Lowest Common Denominator. Both are IMO terrible approaches for cross platform unlike Codename One which is radically different.
When users ask for Native apps they mean: High quality, fast app that received developer investment and QA. They aren't asking you to code your app in Objective-C or make it look like all the other apps.
Waze, looks nothing like a native app yet has a tremendous user rating. How come?
The developers took the time saved on porting & QA (which is faster since bug fixes are ported too) to deliver functionality. Functionality trumps everything.
When creating a native app you are giving up on some functionality and on niche platforms.
The problem is that throwing money/developers at the problem of building mobile apps doesn't make it scale better/faster. So even if you have an unlimited financial budget you will end up with less functionality and longer release cycles when doing native coding.
A friend recently told me: "The only reason anyone ever does cross platform is to save money".
Unfortunately that's usually true, but my response was: "They shouldn't. They should use cross platform to provide a distinct experience and more features.".