Shilpa Mahna Bhatnagar
Director Engineering, Hughes Systique India
Shilpa has an Industry experience of more than 13 years and has spend close to 3 years in the are... more>>
In the year 2007 there was a paradigm shift in the world of Mobile Phone. Apple introduced the first touch screen phone ever which has an immense focus on the user experience and intuitiveness of how the phone can be used by a user.
It enabled users and the community to build applications for the phone and distributed them globally through iTunes Store. At that time blackberry was a popular business phone and although it allowed users to build their own applications, it never was made with the mindset of supporting multimedia applications and gaming.
This led to a need of having a good mix option and hence a paradigm shift where an open OS named Android was introduced in the market and allowed the OEMs to customize the entire OS to the needs of the subscriber. Hence with the Advent of Smartphone the market got divided into two silos iOS and Android.
Android and iOS are similar in so many ways yet so different.
The first major difference is in the development environment: Android development environment is available on most of the operating systems like Windows, Linux and MAC OSx. The IDE is eclipse and the Android development is enabled using the ADT plugin. However iOS development is restricted to MAC OS X and the IDE based XCode is used and the development package like Interface Builder is used.
Tools provided for iOS development are very powerful and their Java equivalent costs hundreds or thousands of Dollars. However Variety of tools and frameworks are provided in both cases to aid development, testing and debugging. The UI design tools for android include eclipse plug-ins for layout editor, DroidDraw, Draw 9- Patch, hierarchy viewer amongst other and similarly on iOS we have Interface builder which comes as part of Xcode.
In the testing tools in case of Android we have a full fledged QEMU based Android emulator, Monkey and MonkeyRunner to simulate touch and click events for applications testing. Similarly, on iOS we have an iOS simulator and Instruments, an application that helps to track down performance bottlenecks and collects data such as disk, memory, or CPU usage in real time.
For Debugging in case of Android we have Hprof-Con which enables us to analyze the memory snapshot of a particular application, there is the DDMS which enables us to debug Android application and support for adb - Android Debug Bridge (provides a command line interface to access android device) as well as gdb. In iOS we have an excellent code completion support and LLVM which constantly evaluates what you type, identifying coding mistakes that Xcode shows as Live Issues, and thinking ahead for ways to Fix-it for you. In both cases there is a very detailed infrastructure support to enable users to develop quality applications.
In android JVM - there is a support for garbage collection and support for multiple programming languages like Java and C/C++ and Scripting. The open nature of Android provides flexibility to exploit H/W specific features. In case of iOS garbage collection is done by means of Automatic Reference Counting (ARC) for Objective-C which makes memory management the job of the compiler. Enabling ARC with the Apple LLVM, dramatically simplifies the development process. The programming language support in iOS includes Obj C and C/C++. Both the platforms provide extensive support for easy Injection of Legacy Code. In case Android Legacy code can be reused in Android application using NDK interface, the JNI Bridge allows C/C++ functions to be invoked from Java. This reduces Application development time as existing code can be used in Android Applications. Hence the C/C++ Open Source software available for Linux can be ported to Android and included in Android Application. In case of iOS legacy code can be reused in iOS application directly (.m, .mm files). This reduces Application development time as compared to Android as the code can be directly drag & drop and can be merged in same the Obj C file.
Considering that we have discussed in detail on how similar or how different the two platforms it’s difficult to judge which platform will eventually lead the market. However, the way things are moving forward there will be major reuse of web applications across Android iOS using technologies like HTML5 and CSS. This is definitely evident with the fact that frameworks like PhoneGap and Adobe AIR are already available to develop multi platform high end media and web applications. Hence till the time Windows 8 does a sweep over it seems Android and iOS are here to stay.
Experts on Mobile
Chief Tech Architect
Sr Software engineer