I have been into Android development for over 4 years now, since the very start. I started working with the 1.0 emulator, that red rounded device,remember? Its image still reminds me of all the time I wasted, waiting for it to run the application I was developing. Since then, things in the mobile ecosystem have drastically improved and new players joined the mobile revolution.
One “new” player is Microsoft with the fresh Windows Phone platform. I’m calling it “new” because Microsoft took a wise decision, to erase the past entirely and start all over again from scratch. It was their last and only chance to stay in the game and they could not afford to lose it. So they came back with a completely new mobile concept and it was actually not that bad. I would rather say they had a great point of view. It was that exact interesting effort that made me look at Windows Mobile closer. Do not forget that -among others- Microsoft is too big to fail.
A few years later, we have 3 major competitors to the mobile os share, Google with Android, Apple with iOS and Microsoft with the Windows Phone. I believe there are tons of articles comparing Android with iOS, so I will try to compare Android with Windows Phone from a developer’s scope. The comparison of course is subjective; it’s like comparing oranges and apples and trying to distinguish which fruit tastes better.
The first question that concerns every developer during his first steps is “how easy is it to start developping on a platform”. Assuming that you already are a windows user, things are quite easy. You have to download the SDK and the Visual Studio Express (a striped down version of the standard Visual Studio) and you are ready to start. Of course the same stands for Android too, you download eclipse, the eclipse plugin and the Android SDK and again, you are set to go. Both platforms have rich documentation but Android has an advantage to online communities like StackOverflow and mailing lists. The problems begins when you are a linux or a mac user like myself. Eclipse and the Android SDK run on all operating systems and versions, while Visual Studio runs only on Windows Vista and later. The solution of using a virtual machine is rather disappointing.
And here comes another thing: cost. Not counting the cost of the operating system, since you have already paid for it, Windows Phone development has extra costs. You have to pay for the full version of Visual Studio and you have to pay an annual fee (99$) if you want to publish an application or deploy your app on your device . Good news are that if you are a student, some of these costs are withdrawn. Android on the other hand, is significantly cheaper. You only need to pay 25$ once, and that is if you want to publish your apps on the Play store. Oh, I forgot, Android headsets are also cheaper, if you want to buy a real device!
Speaking of emulators, Windows Phones have a big advantage here. Strangely enough (!), the Android emulator’s speed hasn’t improved over the years and is still tremendously slow. (Yes, years have passed since version 1). Windows Phone emulator works like a charm and starts at the speed of light compared to the Android emulator. Strangely enough (again) eclipse’s Android plugin and toolset is very buggy and lacks of many features. Also, many developers state that Visual Studio is a much more stable and mature IDE than eclipse, but I’m afraid I’m not in a position to confirm that :)
You have your tools set up, now you must start the development. Both platforms are using XML to construct the UI of an application. In fact the similarities are quite suspicious. Windows Phone offers a great drag and drop tool and the UI creation is a straight-forward procedure. Things are a little bit more complicated on Android. There is a basic drag and drop tool, but it doesn’t do a lot of things (it can’t really), designing the UI for so many different types of Android screen sizes and shapes is -despite the tools and the good documentation- more complicated than having to support a limited and documented set of screens.
Another important issue is the design guideline. Microsoft came with the Metro UI. I do not find it so attractive, but many of my friends who work on the design industry find it splendid, so I have to trust their taste. What concerns me most is that the design guidelines for Android are constantly changing (can you find anything similar between Android 1 and the Holo theme? I can’t!), you have to redesign your app often (this can be a good thing too) but I believe the Metro UI has come to stay and we won’t see any dramatic changes to the UI or the UX of the Windows Phone applications in the near future.
Google made the decision to use Java as the programming language of Android to attract many Java developers. Microsoft did exactly the same, only they used C#. Cloning the good elements and coming to fix Java’s weaknesses, offering extra functionality, C# is a more modern programming language and this is a point for Windows Phone. Do not forget the power of the jars though, as the majority of Java’s extra libraries are very likely to work on Android and this is a big issue if you just think of the Apache Commons’ set of libraries. (I do not want to go deeper into programming language performance war since, let’s face it, testing execution speed of these languages on a 600mhz mobile device has little value). Memory consumption on the other side is a big thing, but Garbage Collectors on both languages do a very good job and it’s up to you to use the phone’s memory conservatively.
So, at this point you have your tools set up, you have the programming language manual by your side, what exactly can you code? This is the most disappointing thing about Windows Phone. No rich notifications (have you seen the Jelly Bean new notifications? They are fantastic!), no custom widgets, no live wallpapers, no true multitasking, no broadcast receivers and content providers, no openness, no abilities. Having worked with Android for quite a time now, I find developing for Windows Phone restrictive and tedious. I hope that Microsoft will get better on this. They have to.
To wrap this up, Windows Phone will attract many developers and many users, but will never accomplish to overcome even the half of the market share Android owns. That said, it is very easy to develop on both platforms, so why not give it a try and choose what fits you the best, and let us know which side you are on =)
At BugSense we offer crash reporting for both platforms, have you tried it? It’s free and easy as pie!
You can find more info on how to install Bugsense (for both cases) here!