So, you’ve just been asked to develop an app for a client. You’ve been told that it should be simultaneously available for iOS, Android, and Windows 7. Your head starts spinning with the overwhelming responsibilities that you’re being asked to take care of – how can you possibly approach a project like this?
In fact – generally speaking – how is it that we’re supposed to develop for multiple systems? Especially when the creators of the devices that actually run the systems are encouraging us to approach development with entirely different protocols?
Going Native: Optimiztion Comes At A Cost
Right now, the three major players in mobile applications are Microsoft (with the Windows Mobile 7 system), Apple (with iOS), and Google (with Android). Accordingly, each respective platform uses a separate environment for native development: Windows Mobile uses C# (and Visual Studio); iOS uses Objective-C (with XCode); and Android uses Java (and Eclipse, alongside the relatively new Android SDK).
Using native development environments allows you to push the capabilities of frameworks and APIs to the max. You won’t need to worry about how to implement each and every feature in other versions of your app (for other devices). Instead, you have free reign to design and code in line with your visions for the app while making no compromises.
Additionally, developing your app like this will allow you to optimize it so that it runs as well as can be expected from any development framework. In fact, there’s no way to get a cleaner development experience than using native tools.
The implications of producing your app like this, though, are fairly severe: you’ll have to build a completely new piece of software for each mobile OS you want your app to run on. Each time, you’ll have to use a new development environment, be working within a new set of limitations (and unique features), and you’ll probably even have to use a separate programming language.
The Case For Cross-Platform Tools
Dozens of resourceful developers and startups saw this problem and the potential within it. Cross-platform tools of varying shapes and sizes were born, each offering unique features and abilities, with a slew of different strengths and weaknesses. They were all published with different licenses: some are commercial for personal use, others for business use, and more still are available open-source.
Cross-platform tools – as the name implies – allow you (the developer) to produce one piece of software which can be deployed across all of the major mobile operating systems at once.
Thus, many modern apps are produced this way in order to save time and resources which many developers do not have. Quick fixes can be applied and released to different app ecosystems on the same day, and major updates can become much-less convoluted when you only have to implement them once.
PhoneGap is one of the most well-known cross-platform frameworks for mobile apps.
The Case For Other Cases
For one, many cross-platform frameworks are inherently slow; this is an issue that comes with running code on a single platform that is designed to adhere to three drastically different operating systems.
This isn’t a problem for those of you who want to put together some HTML5 enterprise apps. It becomes a problem when you’re creating heavy-duty tools, such as multimedia tools or games.
For example, most modern smartphones have processors powerful enough to perform simple tasks (such as displaying text, images, and videos, as well as performing basic screen transitions), even if the code that powers them is somewhat convoluted and clunky.
At the same time, they’ll struggle to run games which update the screen between 30 and 60 times per second if they are having to perform needlessly awkward tasks for each operation. This is the problem when your app is using code that you haven’t had the final say in producing – instead, whichever tool you’re using creates it based on your direction, and won’t be able to foresee the same efficient coding opportunities that a human developer would.
Another problem is that you’ll have issues when trying to take advantage of the nice features each system provides when utilising cross-platform frameworks. For example, iOS has navigation controllers with title bars. This means that if you wish implement buttons in the iPhone title bar, you’ll have to write platform-specific code. You’ll also need to make sure that the Android version, which won’t support the navigation controllers, works well without this.
Likewise, a common point of dissent among developers who champion native development tools, is that cross-platform tools are hindered by their very reason for existence: to make the developer’s life easier. Using these tools, it is often the end user who suffers from the resources saved in development. Apps which could have run faster and which could have benefitted from using platform-specific features end up adhering to the limitations that their cross-platform framework imposes upon them.
Conversely, if a cross-platform tool has a severe impact on your software’s performance, then it’s you who will suffer. Downloads, sales, and reviews will all take a hit if you tried to build a complex image-uploading app using HTML5 and jQuery.
You have to decide if a cross-platform tool is going to help you, and ensure that you are keeping an eye on the balance between an easier development process and general good performance when your product is actually being used.
Examples of Cross-Platform Tools
Xamarin Studio is flexible enough to suit many different applications.
There are dozens, if not hundreds of cross-platform tools. Here is a short introduction to some of the frameworks I have encountered most frequently on my travels:
PhoneGap: Perhaps the most popular of all cross-platform tools, PhoneGap was recently purchased by Adobe and is 100% free to use. At the time of writing, Adobe is also developing an enterprise version, which will include marketing features. Price: Free.
Xamarin: Having recently deployed Xamarin 2, this is hands-down one of the most popular frameworks for cross-platform work. It comes with its own IDE (Xamarin Studio), and also features a plugin for Visual Studio. However, if you wish to build your iOS app from your Visual Studio project, you’ll need a mac to take care of the compiling process. Price: $25 per month, $83 per month, and $158 per month for indie, business, and enterprise licenses respectively.
We’ll Be C#’ing Ya
Cross-platform tools really are of huge benefit to the development community; not just for their ability to quickly produce code than can be run on nearly any smartphone, but also for opening the door to web-developers so that they too can produce standalone apps.
That said, you will need to weigh up the pros and cons for your own needs and decide if implementing a unified framework will really be of benefit to you, or ultimately to the detriment of your app.