There’s a lot of buzz with the new mobile web frameworks and mobile platforms. There’s also a lot of confusion and vague terms being thrown around that are causing people to misunderstand what each of these tools do. I hope to clear up some of the confusion with a few brief points.
A mobile web app is not the same as a mobile native app
A lot of people think that Titanium and PhoneGap are in competition with Sencha Touch and jQuery Mobile. They aren’t the same thing. I’m sure I’m going to get some comments on this but think of a mobile web app as a website. Think of it as Basecamphq.com or Twitter.com. A mobile web app runs in your browser. Almost all of the app’s resources are remote, stored on some server somewhere. Sure there might be some local storage happening but at the end of the day it’s a website application.
A native app runs on your device. All of it’s resources are installed locally on your machine. A native app uses platform and language specific API’s native to that device. You can’t run NSString in a mobile web app. A native app has access to local resources while a mobile web app cannot.
“So what’s the difference between what’s out there?” Here’s the difference:
Sencha Touch and jQuery Mobile
You can use Sencha Touch and jQuery Mobile inside both PhoneGap and Titanium. If you decide your html/js is cool as a native app too, you can use either PhoneGap or Titanium to wrap a browser around your app and put it in the app store or marketplace. This is where, I think, the confusion comes. Putting your Sencha Touch or jQuery Mobile apps in a native wrapper doesn’t make it a native app. It makes it appear as if it is a native app. You might get some extra functionality from PhoneGap or Titanium API’s, but it’s still not necessarily a ‘native’ app. It’s a web app running locally on the device. It’s a great way to use web technologies inside a native-like area.
PhoneGap and Titanium
PhoneGap and Titanium are not similar to Sencha Touch and jQuery Mobile. In fact, I would go as far and say that PhoneGap and Titanium aren’t all that similar. Both allow you to distribute native or native-like apps. Both don’t need to “build support” for Sencha Touch or jQuery Mobile. Why? Because the devices they support come with browsers. Remember, Sencha Touch and jQuery Mobile run in the browser. Since both PhoneGap and Titanium allow you to run things in a given device’s browser, they already have support for Sencha Touch and jQuery Mobile.
I’m still skeptical of the “end of native” chant going around. After building apps for the browser and for the device I think that there is a lot of room for both to still exist together. Understanding the differences of the technologies out there will help clear that up.