First things first. I am primarily a Java developer. But I am newbie at mobile development. So, for a last few months between my regular projects I’ve been learning to develop for Android and iOS at the same time. And I felt a different experience developing with both of them, obviously. With this post I want to capture these differences a newbie experiences albeit from the eyes of a Java developer. Here they are:
1. Cost. iOS has some serious entry barriers. It requires that developers register with it by paying USD 99 per year. Only after this will they be able to test their apps on the iOS devices they have and publish your app too. And why is it important to develop using a real iOS device and not on the emulator? Because a lot of features can’t be tested on the emulator. Also, you need to get the real feel of the app on the device which might be quite different in the realtime. This is not all. The developer cannot develop for iOS on any other machine other than an Apple computer like Macbook Pro or iMac. And we all know what a premium price Apple computers command. And that’s not all. the iOS devices too are way more expensive than an Android mobile device. Just for development you could get an Android mobile device for Rs.4000 whereas an iPhone 5 would set you back by Rs.45000. More than ten times the Android. And what does Google charge for you to register with them and publish your app? Only USD 25.
2. When you publish your iOS app Apple will take time, even a few weeks, to evaluate your app against their guidelines and performance parameters and will approve it for publishing only if your app passes Apple’s tests. And with the Android platform there is no approval process or period. Your app is published almost instantly! While this might look like a great deal with Android development it is also why you will find the most silliest apps on the Android Play Store because a budding developer might’ve published his/her hello world app on the Play Store. Mind you, even I am guilty of this charge 🙂 This might be one reason why the apps on Play Store might equal or exceed the number of apps on Apple’s App Store.
3. Coming to actual development now. It takes time for Java developers to get used to the Objective-C development paradigm. But once you get used to it you take to it like fish to water. And mind you, this is the best time to get into Objective-C development because of the godsent feature of ARC. In short, this means that you no longer have to keep track of the object references/pointers so that you release unused memory so that your app doesn’t crash. This you might , as a Java developer, recall gave you nightmares at the start of your career when you were evaluating which way to go. C++ or Java 🙂 Now, except for the different syntax to describe method calls, method prototypes or class definitions it is as good as Java development 🙂
4. There is a distinct difference in the approaches of layout of components like buttons, labels, text fields ,etc. Android provides for a visual editor which allows you to drop components into it where you like. You can simultaneously see the layout in xml format in another tab of the visual editor. So, on Android the components are laid out in a nested manner and are represented in xml format. So, this brings in a sense of relative layouts. Which, in my opinion, is better than absolute layout. On iOS, there is only a visual editor. You never get to see/edit the raw file where the layout is described. But during coding you understand that all components are laid out in absolute terms. There is a bit of relative layout which dictates how the components look in iPhone and iPad but mostly is absolute.
5. The very good thing which I found in both Android development and iOS development is the amount of documentation that is available. Xcode provides a lot of method/variable completion which makes the job of a newbie very easy. You just have a to type the first two characters and xcode completion assistance kicks-in and then a newbie can look like a professional 🙂 Since I am coming from a Java background I find seeking documentation/help for Android very easy on developer site of android and stackoverflow 🙂
Overall, as a newbie iOS developer I find Xcode environment and iOS very impressive and not so intimidating as I expected it to be. Time will tell how my opinions shape about both of them.