Aaron Hillegass gave a great talk incorporating this topic at the Voices That Matter conference in Seattle a few weeks ago.
He made a few assumptions about the type of project that a client might ask the "web or native" question about, where there is a certain amount of backend work, a certain amount of design work, and a certain amount of presentation-layer work, either native or HTML/CSS/JavaScript.
The backend and design work scale identically for web and native apps as you move from "prototype" to "usable app" to "delightful experience". The client side work scales relatively linearly across this axis for native code, but tends to rise exponentially for a web app.
He actually said that couldn't really think of any good examples of a "delightful experience" in a web app, particularly on mobile. He cited the example of one of the top web companies on the planet working for years to build what is arguably a worse word processor than the "hello world" example code included in most native platform SDKs.
Another issue is that once you start really trying to nail the user experience on each platform, most of the cross-platform nature of a mobile web app goes away. Sure, you can use something like PastryKit to make a web app that acts just like a native iPhone app, but then you end up with a very un-Android-like app when using it on Android.
Something like JQuery Mobile is a great way to get a usable product to market on multiple platforms quickly, but ultimately not everything that could be just a web app should be just a web app.
This doesn't address how to monetize a "mobile web app" - not a problem if you're just wrapping your marketing materials in a UIWebView like he recommends, but how do you make money off of a "real" app if it's "just a web page"? One-click purchasing through a store that already has your cc info is critical when we're talking about impulse <$5 purchases.
Anyway, this is just patently untrue for many, many users:
But you know what? My dad doesn’t care about the deceleration of a scroll and neither does yours. Not mentioning the “native experience” of my brother’s ZTE!
Yeah, dad doesn't care about "scroll deceleration", but if the app feels clunky and unresponsive, they do care and won't come back. Again, it depends on whether we're talking about real apps that do something or just wrapped-up marketing pages.
At the moment, it looks like the trend is towards fragmentation in mobile platforms. A lot of companies are jumping on the mobile bandwagon, and they're not all adopting Android. I don't know if this trend will continue, but even with the current level of fragmentation, developing web apps seems very attractive.
Already, developing the same app for the iPhone, iPad, Android phones, and Android tablets is an expensive prospect. Appcelerator helps, but it's not a perfect solution, in part because it doesn't and probably never will support every platform.
With HTML/CSS/JS, on the other hand, you get cross-platform compatibility for free. "But," you say, "not all mobile devices have good support for web technologies!" This is true, but I think we can expect that to change. Support for the web should constantly improve across all platforms over time.
Since I prefer to invest in the technological long-run, I'll put my money on web apps except when native-only features are required. That way, instead of trying to port my app to an ever-increasing number of platforms, an ever-increasing number of platforms will--of their own accord--come to support my app.
html5 will steadily wire up the missing features over the next few years with WebGL, device API workgroup[1], notifications api[2], video and audio tags etc.
the problem is that vendors will have a conflict in implementing those features since they will compete with their native apps and app stores
Apple and Google will need developer pressure to keep them honest, and hopefully give us access to the appstore upside of distribution while writing to just the html5 api
I think Apple and Google can protect their distribution channels and support mobile web as an equal to native.
They can maintain the same approval processes, charge the same fees, and enforce submissions of your mobile apps to the same places if you want inclusion in their app stores.
For mobile web, it could be as simple as compressing a folder of specially named HTML and JS files or providing an absolute URL where the main "executable" HTML file lives.
In the end, Apple and Google can make the same amount of money from mobile apps vs native apps. I don't find many reasons they would care how the app is made (except that maybe they want "exclusive" apps that are only on one platform or the other --- or they want to not include absolute URL mobile web apps because you can submit an app and change it entirely the next day by changing the files on your server...though you could get around this by mandating that your app be submitted as packaged HTML/JS)
I hope this happens, esp with the solution you outlines where the app is just the html+js+css etc. zipped up into a distro form (is there an open standard for manifest files in this type of distribution of web app?).
The only thing I can see possibly being a concern is UI consistency - web apps are a free-for-all. Apple may release a UI kit
The thing google, and apple need to protect is there distribution channel, not there platform. If you lock down your distribution platform you can charge 30% for recurring subscriptions. This incentivizes companies like Apple, and Google to not optimize the experience of packaging, and installing mobile apps over the air. They don't want to hobble there web experience though, as that is something many people do on their phones. Things like WebGL will make it into phones eventually, standards are just slow. Google has already started to implement the Device API in honeycomb.
The vast majority of business applications don't need to be native apps. Once jquery mobile reaches version 1 lots of companies will be able to justify mobile versions of their websites that are stopped now by the price tag of creating a native application.
I agree. There are too many road blocks for mobile apps to replace web apps.
Until you can solve the data input problem on mobile devices, and massive content delivery limitations by screen size, web apps will still rule.
When it comes to games, the computer vs. mobile device really isn't a fair comparison. They both solve different entertainment needs. One is an intense or shared experience need, the other is a casual time filler need. The concept of a portable gaming system is not new. Mobile games are just more accessible than previous systems.
As a developer, I hope html5 apps end up being the norm, but one key difference between desktop apps and mobile apps is that you pretty much always have your phone with you. As a consumer, I love web apps because I can access them from anywhere and dont' need to have my computer with me. But if I always have my smart phone with me, what's my incentive to prefer a web app to a native one, especially one that syncs to the cloud?
Either author has narrow definition of what "app" is, or he forgot a lot of apps.
I could remember CPU-intensive applications (for example, number crunching of all sorts), cryptographic applications, OS-integrated applications (VPN, network filesystems of all sorts, process monitoring, and whatever else needs to be integrated with OS), all sorts of plugins and so on.
It will take a long time till there will be no native apps anymore. As long as the choice remains between the browser experience and native apps, native apps will still have a chance. The moment the first OS finds a new and cooler more native style experience way to access the internet and website, Webservices will win.
I think the biggest problem is that Apple has created the behavior of going to the appstore to find stuff, and until startups and developers stop going this route, or Apple really starts doing what they say, and promote HTML5 apps.. then the transition will be slow.
It's true, I've known a couple of startups who went the mobile web route only to continually hit the "I can't find your app in the store" support question. Using Phone Gap or a wrapped mobile web app in a native app mitigates this though.
Or pick any of the content creation apps at all, really.
Essentially, if your app is glorified advertising or a just a front-end to an online database, yeah, you can probably use the web. Otherwise, if there's more than just pretty, mostly static, graphics over the top of SQL, then you better go native otherwise your competitors will.
I see articles like this all the time that talk about "their mom" not minding such and such. Really, they are just talking about setting the bar low enough to step over it. My parent used a shitty virus laden install of windows xp for years, and crashing was just part of the experience, like a sticky lock or a worn screwdriver. Do not use others expectations as an excuse -- surprise and delight people. (dammit :-))
Chrome, Firefox, OneNote, Sharepoint, iTunes, Windows Media Center, Camtasia, VMWare, Git, Garage Band, Final Cut Pro, CS5+, True Crypt, Visual Studio 2010, ... The list can go on and on (although some might be slightly older than 10 years old).
Actually, most of these applications are more than 10 years old. And back-end systems, develompent tools and heavy duty media creation apps can hardly be compared to something that's a candidate for a web app.
Because it will never end. Today it's camera, accelerometer, compass, and voice commands... tomorrow it'll be something else.
Right now, since apps are predominantly native, a vendor can add new hardware and capabilities to their devices without the prior blessing of a standards body. Standards bodies will always be several years behind the state of the art in features, which means anything really compelling and new will always be in native form.
Didn't take long to incorporate into the spec (even then, it's practically light speed by W3C standards, and a tortoise crawl by native standards)... but support in the wild is still pretty pathetic.
As long as IE lives, web standards will move at a snail's pace. I'd say we're >5 years (probably more!) out from being able to, in general, expect something like geolocation to be supported in your average user.
If you want to move faster than the competition and give more hardware/features to your users, you're still going native.
it works decently on webkit browsers (and palm os i think, and nokia). The thing is there should be at least drafts for camera or voice support in webkit, simply because there is a need for it (Or else there wouldn't be projects like phonegap or titanium). With the proliferation of tablets and more and more mobile devices, going native will soon be a sisyphean task.
It's going to be both web and native. Performance matters and web simply aren't up to it for a long time to come. Even with WebGL etc.