Currently there is a large number of different operating systems for mobile devices out there. While just about five years ago there were much fewer platforms competing for the mobile user ( Symbian, Palm®, Windows® Mobile ), this has changed dramatically in recent years. Apple’s iOS platform as well as Google’s Android™ based devices and RIM’s Blackberry® are currently amongst the most popular technologies for modern smartphones. And there are new platforms making their appearances, for instance Microsoft’s Windows® Phone 7 which will be released later this year.
As you can see there is quite some diversity in the mobile land, even though this is not even a complete list. “Great”, you might say “Let’s develop a software to run on iPhone®, Android, Windows Phone 7!”. The only problem is that the development process is quite different and the technologies used are too. For starters they all use a different programming language.
Writing an application for Apple iOS™ driven devices ( iPhone/iPad ) requires you to write it using Objective-C®, C/C++. If you want your app on the latest and greatest Google Android phone it most likely is written in Java. Not to forget Microsoft’s newest contender Windows Phone 7 which uses its Silverlight™ technology based on C#.
What is cross-platform development?
Cross-platform development describes the strategy of developing an app that will run on all or at least some defined amount of mobile platforms while sharing as much as possible common application code that can be used on all operating systems.
Let’s take a glimpse at the desktop application world. All the major operating systems for desktop computers aren’t very strict about how you develop applications on them. It is quite common to create a software that is written with C/C++ and which can share most of its code and runs on all of those systems.
Mobile systems are a little different as most of them dictate the technology to be used in order to create an application for them. Technically its just not possible to write common shared code for an application that requires Java on one platform and C/C++ on the other. However, some platforms do use the same basic technology ( Java in the case of Android and Blackberry ). Still the programming interfaces ( the way to communicate with the device ) are very different even if they do share the same programming language.
A feasible strategy is to write common business logic code ( in our example above using Java ). That is code that represents the applications logic and rules and usually makes up a good portion of the entire application code. So, while it is difficult to share application code among platforms with different programming languages, it is possible for operating systems with the same language.
There are other options that can be considered when targeting an application for multiple mobile systems.
1. Cross-platform frameworks
One example for this would be PhoneGap.
2. Native development
Native development describes the process of designing and writing an application for a single platform and using its specific recommended development tools and procedure. Most of the time this approach makes a lot of sense, simply because you can leverage all the native features that the platform offers in an optimal way. With multiple platforms that are very diverse, so is the feature set that they offer. When using native development you don’t have to compromise. You can solely focus your entire attention to the single platform with all its abilities creating a sound user experience all the way for your applications audience.
Another option would be Xamarin, which lets you develop iOS, Android and Windows Phone applications with C#.
What’s the best strategy?
To make it short, there is no best strategy. Every single project makes it necessary to perform a detailed evaluation of the apps set of requirements as well as the current technology options. Only then it is possible to select, a for this specific use case, optimal development strategy.