Part 2: Native iOS Development
Part 3: Native Android Development
Part 4: Native Windows Phone Development
Part 5: Native Windows 8 Development
Part 6: Hybrid Development in C# with Xamarin
Part 8: Hybrid Development in HTML5 with Icenium
Part 9: Mobile Web with Responsive Web Design
Part 10: A Back-end in the Cloud with Windows Azure Mobile Services
As a mobile developer, you may find yourself specializing in one particular platform (e.g. "I'm an Android developer") or perhaps supporting all of them ("I'm a mobile web developer") or specializing in mobile back-ends (services, data, security, and cloud). All of these are important.
You can develop mobile client apps natively, using a hybrid approach, or via mobile web. Let's look at them, one by one:
- In native development, you are using a tool and language espoused by a mobile platform vendor as the official way to develop for their platform. Depending on the platform, there may be several endorsed languages or development environments to choose from. Native development is often considered the high road, because alternative approaches can sometimes compromise performance, limit fidelity to platform usability conventions, or restrict the functionality available to apps. However, native development can also be expensive and may be a mismatch for the skills known to your developers.
- In hybrid development, a third-party provides tools and a framework that allow to develop for a platform using an alternative approach. This may allow your developers to work in a familiar language or development tool. Some hybrid solutions generate a native application as their output; others execute within an execution layer or browser contained in a native application shell. Hybrid solutions are sometimes considered risky because the third-party may not be able to stay in alignment with mobility platforms.
- In mobile web development, you develop a web site intended for consumption on mobile devices via their browsers. You detect device size and other characteristics and the web experience adapts accordingly. A mobile web approach is not always a suitable experience, but at times it can be. From a skills standpoint, mobile web is very approachable due to the large number of web developers in existence. An economical advantage to mobile apps is that you develop a single solution, rather than separate apps for each platform.
Most mobile solutions involve more than just the app(s), that visible part you interact with on mobile devices. There often needs to be a back-end that provides one or more of the following:
- Security - user authentication and authorization.
- Storage - persistent data storage.
- Notifications - event notifications.
- Processing - you may need server-side processing to augment what the limited processing available on mobile devices.
- Integration - coordination with other systems in the enterprise or on the Internet.
- Cloud - use of cloud computing can make your back-end available across a wide geography or worldwide.
The table below shows some of the choices available to you when you are targeting Android, Apple, Windows Phone, and/or Windows 8 devices.
In Part 2, we'll look at what it takes to develop native applications for iOS.