Native applications -- those created using the Apple Xcode development environment -- obviously offer developers a broader range of features. But developing native apps for distribution via the App Store also means obeying all of Apple's guidelines and purchasing a US$99-per-year iPhone developer membership. It also requires a knowledge of the Objective-C programming language and a familiarity with Xcode.
The pros and cons
Deciding whether to create a Web or native app depends on a number of factors. First and foremost is the ability and willingness to learn to write Objective-C code and use the Xcode environment. For experienced Mac developers, there's very little learning curve, since the underpinnings of the iPhone OS and Mac OS X are essentially the same. However, for anyone without that kind of experience, Objective-C and Xcode can be a bit daunting, which is why developers liked RunRev and Adobe's Flash Packager for iPhone, both of which offered an easier learning environment, before Apple changed the development rules for iPhone OS 4.
For those organizations simply looking to present content in an iPhone OS-specific format or to tie into existing Web-enabled resources like personal information managers or databases, there's an advantage in going with a Web app. Development will likely be easier and quicker, these types of uses generally won't require a lot of advanced features, and they rely largely on commonly used Web technologies. Take a look at Apple's Web app directory for examples of what can be achieved.
For sites that use WordPress as a blog tool or content management system, creating a Web app is even easier: There's as a WordPress plug-in that automatically formats content as a Web app for the iPhone OS and other mobile platforms such as Android, Palm webOS and the Blackberry Storm. It's freely available, and it works. Just head to [[xref:http://www.ryanfaas.com/|Ryanfaas.com|Ryanfaas.com] on a supported device.
Although Apple supports Web apps, it doesn't maintain the degree of control over them that it does with native apps. That's largely because Web apps are essentially specially formatted Web pages. As a result, Web apps are free from any of Apple's requirements for native apps. Google actually used this as a solution after Apple refused to rule on its Google Voice app.
For developers who want to create more-robust apps -- including those that take advantage of more iPhone OS core features and APIs -- Web apps can be constraining. Those limitations will be even more noticeable with the release of iPhone OS 4, which will offer a wide range of new features for native-app developers. Native apps also don't require hosting the app on a Web server like Web apps, which, depending on the popularity of the app, could get rather expensive.
Web apps also can't be monetized as easily as native apps, for which developers can set a purchase price and prices for in-app purchases that deliver additional features and content. In picking which direction they want to go, developers have to settle on an ultimate goal: Is their application designed primarily to make money or simply to offer up content or information?
Business, education and internal app development
The calculus on Web apps vs. native apps changes a bit if you're creating apps only for internal use at an organization. Apple's enterprise iPhone developer program exists for creating native apps that will not be submitted to the App Store. At $299 a year, the program is more expensive than the general developer program, but it allows organizations to internally develop and distribute native apps. Since the apps don't need App Store approval, they aren't bound by all the requirements of commercially developed apps (though they still require a working knowledge of Apple's development tools)