Finding Your Way: Mastering Android and iOS

Mobile development is hot right now, and while most companies want developers that are strong in either Android or iOS, they seem to love those that are exposed to both.

As developers, we all want to focus on the “coolest” thing that allows us to make the most money. And being human, we want the easiest route. So, where do you start, assuming your company has not already decided that for you?

When I first looked at mobile I had to decide which OS flavor I wanted to focus on. I had a very strong background in C/C++ and C#, but had also worked on a lot of flex projects using ActionScript (similar to Java in some ways). I looked at what languages and IDE (Integrated Development Environment) were used for Android, iOS and Windows Phone (marked it off my list because there was not much of a market at the time).

Heading Down the Android Path

Android uses Java and iOS uses Objective-C and both have a number of great tools to work with, along with a good IDE for each: Eclipse and Xcode. With a strong background in C/C++, my first thought was to dive right into iOS because I thought I could hit the ground running. However, when I opened the IDE and started to create my first application, I quickly realized something was wrong. Where did this funky syntax of wrapping commands in brackets (‘[‘ ‘]’) come from? Well, after reading a little, I realized that Objective-C is a hybrid of SmallTalk and C/C++ and at the time it looked Greek to me. I quickly turned to Android and Java to calm my nerves.

Time passed, and I had many Android applications published on Google Play and Amazon. I learned to love so many wonderful Android features not found on iOS, such as Live Wallpaper and simple Bluetooth data reading (Bluetooth is available on iOS but you have to do some interesting things to read scientific data and still get the app published on the Apple App Store — that’s a later article). However, I was still being asked about developing for iOS.

Detouring toward iOS

I approached iOS a little differently this time. I did a complete deep dive into Objective-C and Xcode. I also thought the best way to learn something new was to convert an existing Android app to iOS. So, I identified what I remembered to be the most challenging part of the Android code and built small test cases for the same in iOS so that I knew I could convert the application as a whole.

My biggest challenge was not Objective-C, which I have come to love, but Xcode and wiring up controls and events. In Android, I had to do all the work myself and at first, using Xcode, could not figure out how my instance variables were communicating with my controls and how to wire in my events and update the screen. After a little digging I realized how simple it really is and how much time it saves once you get familiar with Xcode.

Just like the flow of water, I took the path of least resistance and went toward Android first. If you have never coded before or have little experience in coding, then working with iOS is a great place to start. However, if you’re seasoned and impatient (like me), then Android is a good place to get started quickly. Both environments are great, and I’m sure you will come to love working with each as I have.

No Responses to “Finding Your Way: Mastering Android and iOS”

    • Hi Kiran,

      Mobile Enterprise Application Platforms are a good option for someone to consider depending on the type of application you plan on building. For example, if your app is going to represent simple data from a web service or accept simple data entry then a MEAP solution could work well for you. On the other hand, if your application requires Bluetooth connections to scientific data modules that must read thousands of data points in different background threads then native coding is a better option.

      Just this past week I was asked by a firm in Atlanta about evaluating their iOS native application. They happen to be in a market that does not require heavy lifting or even threaded applications so a good MEAP solution would actually work better for them. The developers on the project were not real happy but management had a smile on their face.

      Thanks for the comment,

  1. @KIRAN – please tell me when “Build once run anywhere” type of pipe dreams have ever lived up to their hype.

    Anyone advocating web frameworks to do mobile client development, a.) has no appreciation for a native client experience b.) does not want to lose the dream of coding a pseudo-native client in web type scripts.

    If it sounds to good to be true, it probably is!!! You’re never going to get something for free, stop trying to take the easy way out. ” Learn the native SDK of the platform your building for “, if you can’t do that, then go back to web scripting and avoid mobile client development.

    All respect to Java, but tell me, how did that “build once, run anywhere” work out for them? You couldn’t even run a Java window application on windows for several years, as it was so horribly laggy.