Web Apps As First Class Citizens
My biggest ongoing complaint about the new breed of evolved mobile applications is that, at least in some ways, they feel like a tremendous step backwards in terms of developer productivity and ubiquitous access. Sure, the iPhone and Android development platforms let you take advantage of some fantastic device-specific features such as the accelerometer and location based services. And I guess if you're already a Mac developer, using Objective-C and Cocoa feels natural enough for iPhone development.
But as more traditional desktop applications move to the web -- to the cloud -- it just seems downright odd to me that we're forced to learn yet another set of platform-specific tools to develop new interfaces for our existing web apps in the mobile space. Fortunately, new solutions are emerging that make it easier than ever to package existing web apps for "native" mobile deployment...
If you recall, I wondered awhile back about packaging web applications as SSBs for deployment on the iPhone, and sure enough, there are solutions available now. Huzzah! PhoneGap (open source and available on GitHub) is one of the most appealing toolkits I've seen, offering support not just for the iPhone and Android, but also for Blackberry. The idea is simple, at least in the iPhone's case -- you download a set of libraries that let you wrap a web application up in a native application using Webkit.
All you have to do to accomplish this? Launch the included project file, change a few configuration settings, like specifying the URL for your application, include an icon file, compile, and go. You do all this in X-Code like you would for any other iPhone application. Then, assuming you're a registered developer and have paid the Apple tax, you can submit it to the application store, as a standalone deployable application. Just like for any other iPhone application.
I should note that there are of course a certain class of applications which are not going to be great for this sort of thing. You're not going to want to build many interaction-heavy games in this manner, for instance. But for a large number of business, utility, and social networking applications that already have a pre-existing web frontend and require network access to function, it's a no-brainer. Just build on top of what you already have instead of reimplementing it from the ground up on a new platform with a foreign set of tools. The web is, after all, supposed to be ubiquitous.