Native, Web, or hybrid: How to choose your mobile development path

With new tools and frameworks and the right development kit, you can make sure your mobile apps reach multiple platforms

Page 2 of 4

Mobile app-dev golden path No. 1: Native app development

Native app development for a single mobile OS is the traditional approach, but it's also the most time-consuming. Each mobile platform vendor offers completely different programming environments, and each has a unique UI style. Apple's Xcode IDE employs the proprietary Objective-C language for iOS devices, while Google's Android coders generally use the open source Eclipse IDE combined with Android's native Android Development Tools (ADT) Java programming plug-in. Microsoft offers Visual Studio Express for Windows Mobile and its Windows Phone SDK, aimed at WP7 devices, in which programmers code in the also-proprietary C#/.Net idiom.

The vendor-tool native approach guarantees access to every nook and cranny of a device, but it also requires computer-science-grade software engineers. In addition to being the most time-consuming, it is the most expensive methodology. Although device vendor tools are available free of charge (vendors having a vested interest in evangelizing their mobile OSes), building one requires real programming skills. Coding difficulty ramps up rapidly as app complexity increases. An experienced C programmer can build a simple app in mere hours, but more complex apps easily rack up hundreds of developer hours -- and tens of thousands of dollars in labor costs.

But for apps that will have a long lifetime or require best-of-breed performance, native development is the way to go. If your app needs to get online quickly, though, you may not be able to achieve a delivery deadline without hiring pricey consultants or investing in expensive in-depth staff training, such as that offered by Big Nerd Ranch.

Mobile app-dev golden path No. 2: Web-based development

The second, and quite popular, path is Web-based development. The app isn't really an app at all, but a customized website tailored to have the look and feel of an app. This is by far the simplest approach, and the app logic can readily tailor itself on the fly to different OS platforms. In iOS devices, you can even create an app icon using the Add to Home Screen feature in Safari, giving users more of the illusion of a native app.

Web-based apps rely on JavaScript for client-side programmability. JavaScript has full-fledged procedural and object-oriented language features; unlike client-side Java Applets, it's supported by virtually all mobile browsers. You can greatly simplify mobile Web app coding by employing an open source JavaScript framework, most of which provide precoded user interface elements and an MVC application model. Examples of open JavaScript frameworks include Ext JS, (now Sencha) JQuery Mobile, and The-M-Project. Using a JavaScript framework is as simple as including the framework's .js file in your JavaScript application and referencing framework functions in your own JavaScript code. Because of this, there is no need to change your IDE, and the learning curve is minimal.

Web-based apps can look and feel very close to native apps, if you discount performance. But because users access the app through their onboard Web browser, a network connection is required for most functions, and users will feel network delays. HTML5 includes the ability to access local storage, but the memory capacity on most mobile devices is usually a few hundred megabytes, which limits what you can do in a Web app sans Internet.

In contrast to native development's need for big-brained programmers, the only skill required for Web apps are those of the average Web developer: HTML5, CSS, and JavaScript, and possibly a server-side language such as Java, PHP, or Ruby. Because the entire app lives on the Web, you can update it at will without having to redistribute the app itself.

| 1 2 3 4 Page 2