“…an exploration of the subject from one perspective intended as a vehicle for shedding light on the merits of any platform as it pertains to mobile development…”
When it comes to computing platforms, few debates cause more bias-rage and consternation than the ubiquitous Mac vs. PC donnybrook. As an enterprise software engineer for business applications using Microsoft’s development and database platforms, there simply was no debate for me.
While the Apple platform dominated the graphic design and publishing industry for many years, the PC/Windows platform held dominion over business application development. The server, client, and tools for the job were all tightly interwoven in a way that didn’t offer much room for anything else to make much sense. But as technology has evolved, and as I’ve worked toward expanding development efforts into the mobile app environment, the choice is not so clear. Which platform, then, is the best platform for mobile development?
Let me be clear, at this point, to state emphatically that this article is not intended to ignite yet another flame war between competing platforms, nor is it intended to provide an empirically definitive answer to which Hardware /OS platform is ‘the best.’ Rather, it is an exploration of the subject from one perspective intended as a vehicle for shedding light on the merits of any platform as it pertains to mobile development.
As with many things in life, context plays a significant role in the discussion of mobile app development platform. To answer the question of which platform you should choose, you must first establish some context to provide additional (and necessary) information that will frame the question in a way that allows for the best answer. It does no good, for example, to ask what is the best book out there that I should go read next. The query is too vague and does not necessarily provide meaningful results. I may get suggestions for books in genres that I have little or no interest in, thus rendering any discussion moot, or at the very least diminishing the quality to a large degree.
When it comes to the debate about mobile development platforms, perhaps the most important of these contextual questions is, what is your target audience? While some points in the great platform debate are subject to a high degree of personal preference, there is little argument to be had that certain platforms have an inherent advantage when it comes to certain target audiences. To be clear, I’m referring here to the device upon which your app will be consumed. If you are strictly targeting iOS as your distribution vehicle, it makes little sense that you would intend to use a Windows PC platform for your development. Likewise, if you are targeting Windows based mobile devices like the Surface or Windows Phone, a Windows development platform is likely the best (if not only) choice for developing a native mobile app.
Some will make an argument here that your choice of target platform does not necessarily dictate your development environment. To be fair, there is an element of truth here. There is an ever-growing list of app development tools out there touted as one-stop development applications to cover all your app development needs. Some of these have been very successful at delivering on those claims. However, many of them may not provide all of the necessary requirements for building and publishing your app due to compilation and signing requirements. These are important factors to consider in the big picture, and could sway your decision one way or another, so make sure you have all the facts before you jump in.
iOS – When it comes to iOS apps, it may be hard to beat a development environment that runs on a Mac. In the early years of iOS, there really was no choice but to develop on an Intel based Mac computer. Since then, there are have been any number of efforts to open the door to other possibilities.
Adobe’s FlexBuilder application was one of the earliest development tools to push for the ability to compile an iOS application outside of the native XCode environment. Now, any number of online services touting the ability to create an iPhone app without knowing any XCode have cropped up. Some of these have been more successful than others.
However, as mentioned previously, the digital signing process that is required for submission to the App Store may not be included with the services. So, while you could potentially use a Windows PC to do the majority of the development of the app, you’d still need a Mac to complete the process for submitting it for inclusion in the App Store.
Some avid Windows users might make an argument that you don’t need Mac hardware in order to run Mac OS X. They will talk about setting up a virtual machine or in some cases even installing a version of Mac OS on a non-Mac hardware device (aka Hackintosh). It’s important to note, however, that these are not only unsupported by Apple, they are a clear violation of the OS X EULA, and thus illegal. In my opinion, that makes these completely nonviable options.
Android – Because of its Java core, the contextual argument is somewhat moot when it comes to developing Android apps. Many of the web-based services that tout the ability to easily create iOS apps provide cross-platform capabilities to output for Android as well. Furthermore, some of the most popular IDEs for building Android apps, such as Eclipse, are available for both Mac and Windows. Because of this, there wouldn’t appear to be a clear-cut winner here. One possible caveat here has to do with mobile device hardware. My first experience delving into mobile app development involved modifying an existing Android app. While I was able to easily set up Eclipse in my Windows environment, I ran into a fair amount of trouble when it came to device recognition and the ability to directly compile and push the updated builds to the device I was using through the IDE. I spent a great deal of time trying to work through those issues. Ultimately, I switched over to a MacBook Pro and found that I didn’t have nearly the same struggle on this front—something to consider for someone getting started.
The Smaller Players – Much in the same way that iOS apps are best developed on a Mac platform, Windows Mobile apps are best built within the Windows ecosystem. Microsoft has a strong IDE in Visual Studio, and it only makes sense that it would provide the most tightly integrated set of tools for development.
The latest Blackberry 10 SDK has an IDE available for Windows, Mac, or even Linux, should that be your forte. Symbian, still clinging to roughly 4.5% of mobile market share, also allows for development with the QT SDK on Windows, Mac, or Linux platforms. Arguments can be made for one platform or another, but there doesn’t appear to be a truly compelling reason to assert that any platform is better than another, outside of personal preference.
While each platform seems to have its own merits depending on your target audience, many developers will want to target not just one, but potentially several platforms. The fact of the matter is that iOS, with close to 54%, and Android, with close to 30%, currently account for around 84% of the mobile market share.
As a developer, I wouldn’t want to eliminate either of those audiences (and potential revenue streams). It’s in this environment that I think the Mac platform carries a significant advantage with the ability to cover both bases (iOS and Android) from a single workstation. Add in the ability to run other operating systems in a virtual environment like Parallels or VMware, and you can have all of the OS environments you need to run any development application all on a single hardware platform (legally and without breaking any license agreements).
For me the versatility and ability to set up multiple VMs for a variety of operating systems is a big advantage. It’s the main reason I have transitioned to a MacBook Pro, even though I’m still heavily involved on Enterprise application development and not exclusively mobile app development.
But that doesn’t mean it’s the ‘Best’ platform or even necessarily the ‘Right’ platform. The best platform is the platform that you are comfortable with, that allows you to focus on the development of your ideas into applications that can be brought to market in the fastest, most efficient manner possible. Determine your target audience, evaluate your willingness or desire to tweak and customize your hardware, OS, and development environment, and make any appropriate concessions for requirements, then let that determine which is going to work best for you in your own individual situation.
What’s the best platform for mobile development? The one that works best for you, allowing you to work most efficiently and helping you to focus your attention where it belongs—on developing standout mobile apps!