Purpose Finding a platform for your mobile application is a daunting task. There are a myriad of options available, all of them with enormous advantages and even larger disadvantages. Picking the wrong platform could eliminate your greatest feature. This article is to help you navigate these options and narrow the field to something that works well. Native Frameworks At the time of writing for this paper, the most popular mobile platforms are without question Android and iOS. Writing natively for these platforms is certainly an option. You’ll benefit from the best performance, have unlimited use of device resources such as the camera, notifications, background tasks and storage, and will have a simple monetization route through application stores. But this choice is not without its drawbacks. You’ll be at the mercy of the marketplace arbiters, and Apple is notoriously strict. If targeting both platforms, you’ll have to write your app twice – once for each platform, and maintenance requires a comparable step up in cost. Web Applications Applications can also be delivered via the web, with all the deployment benefits that has, using all the same skills a web developer already has. Browser applications live outside the walled garden without any 3rd party dependencies on deployment. Such applications are easily cross-platform compatible because both Android and iOS are based on a mobile variant of WebKit, which also powers the popular Google Chrome and Apple Safari web browsers. You can even take the applications offline in a limited fashion using HTML5 local storage. Of course there are also issues with this approach. You’ll have little access to device resources, and depending on the type of application you want to write you may be required to rule it out entirely; for example, if you need more than a few megabytes of storage (for videos, pictures, etc.), you will quickly reach the storage quota for an offline web application. And there’s no ability to upload files with iOS. A general rule of thumb is if everything you need is available via a desktop web browser, you are safe to do a mobile web version as well. Cross-Platform Frameworks Some attempts have been made to close the compatibility gap between the major phone operating systems, and the result have been several frameworks of varying degrees of maturity. These frameworks are characterized by their ability to unify your codebase, provide access to resources unavailable via the web browser, and attempt to eliminate the maintenance disadvantages of developing natively. The result is usually much simpler to maintain than two or more native applications. Many of these frameworks make use of an existing skill, such as .Net experience or web development so some existing staff are easy to train than if they’d gone directly to the platform Software Development Kit. But learning these frameworks is a specialty skill. The technology behind them could quickly become obsolete, leaving you with long-term maintenance problems. Summary In general, there are some simple questions you can ask to decide which option is best. If no device resources are required, a browser application is usually a great choice. And if there is no need to support multiple platforms, a native application will be your best bet. Finally, a cross-platform framework is available to those that need to support multiple platforms and require access to device resources. Case Study #1 Requirement: Take and upload photos of a room to a website, with some data tags. The application must work on any modern smart phone. This requirement is a good candidate for a cross-platform framework, because it requires a camera and file uploads, but is not complicated in any other way. Case Study #2 Requirement: Create a football play manager with detailed animations of the plays. Generally, a “game-like” user interface or custom animations will require a native application. The Unity framework is a great tool for an app like this, and is compatible with iOS and Android. Case Study #3 Requirement: Maintenance staff complete tasks, record inventory while offline. The staff synchronizes at the start and end of their shifts. It must work on both Android phones and the iPod Touch. Although there is a requirement to operate offline, a web application is well-suited for this. It will work on both desired platforms. Recommendations Always consider developing a mobile web application first. Only develop a native application if you’re building a consumer application that you want to monetize through an app store, or you need to access device resources. If you do develop a native application, you should support at least iOS and Android.