Why Develop for Mobile ?
I’ve been reading up on Android and iOS development for a year or so now and am starting to ‘get into it’ I’ve even stuck at it through the most boring chapter of the most boring book LOL ( do you want to know how to express the recipe for a jam sandwich using XML ? )
Really for me the fun is in the journey of learning and making use of new knowledge along the way, for example the MVC design pattern is useful to me in my new job as a PHP coder and is also employed in iOS development. Hopefully some good will come out of it all, perhaps the next killer app 🙂
The Native/ WWW debate
HTML5 and CSS3 are standards that have made cross platform Web development much easier. Whereas most mobile platforms adhere closely to these standards now, accessing content and application functionality via a Web browser still requires an extra layer of interpreted code .
This processing leads to a drop in performance and consumption of extra resources, not a good thing when you consider that CPU and RAM and particularly battery power are all set to be limiting factors on mobile devices for the foreseeable future .
In addition to by-passing the extra layer of software called the browser, native apps provide access to the same building blocks that the mobile OS itself is built with. Using this native functionality allows developers to build software that fully integrates with the OS and other apps.
Another consideration is that there is the possibility of generating financial income by selling apps ( on the Apple iTunes or Google Play stores etc) This model of software installation has proven to be popular with mobile phone users and additionally it offers the potential for income via advertising.
A bit of History
I do not intend to write a history lesson here but lets have a quick look at where these two platforms have emerged from
Apple was first to the scene with it’s iPhone, which believe it or not was only released in 2007. Before the iPhone, smart phones with really limited in use to the likes of IT nerds who could understand cryptic menus and were willing to spend hours reading manuals and solving problems. ( Any one else have a P800 ? ) I remember vividly the moment the first time someone demonstrated their iPhone to me. Within a few minutes she was able to confidently swipe and tap through various screens and show me how it all worked, pretty impressive. Apple solved the problem of how to make a smart phone that people actually wanted to and even enjoyed using.
Not that long after the iPhone appeared, Google released its first Android OS Nexus device, leading Steve Jobs to eventually threaten to declare ‘Thermo Nuclear War’. As we shall see It was not only Apples ideas but also Oracles Java API that led Google at least to the edge of deep water.
The main thing to note about Android is that, Google being an internet company is really more interested in advertising things. Google actually make the Android OS freely available to hardware manufacturers who add various device drivers and value added software. From a users perspective any one can freely develop and install any apps they want.
iOS has at its heart the OSX operating system and apps. are developed using the Objective C programming language. Objective C is closely related to Apple and is deeply ingrained in the OS. The various frameworks are the result of several decades of development that can be traced back to the origins of Apple itself. More recently Apple shocked the developer community by releasing an all new, backwards compatible programming language called Swift. This aims to make iOS more attractive to developers who are more familiar with modern scripting based languages.
Apple provides its all in one development platform IDE known as Xcode. This is available as a single huge ( but free) download from the App store. The proviso is that you need a Mac to run it. ( You need Xcode to develop Mac and iOS apps ) Although its free to run apps in the built in iOS emulator, to actually get them onto a device requires a yearly subscription payment to the Apple developer programme.
Android is built on the Linux kernel, and apps are written using the Java programming language. The link to Java stops at the source code level though since Android implements its own Dalvik virtual machine and has its own class libraries. To code for Android you download the Android Developer Tools add on for the Eclipse IDE. The ADT comes with an Android Emulator ( as opposed to the Xcode simulator)
Where as I could never quite bring my self to forking out for an iPhone I’ve had an iPod touch and iPad for years. More recently I got an Android ( Moto G) phone last year and have been really impressed at it’s features and value for money. £100 buys you 4 cores and 1Gb RAM with a HD display. It was clear that the Andoid OS had certainly come a long way since my Samsung S ( which is still going strong sort of ).
I’ve just recently flashed the plastic for a shiny new Galaxy 10.5 tab. The AMOLED display is technically superior to an LCD in that it is capable of displaying more colours and has a higher contrast ratio and is a world first on a tablet. It’s pretty amazing actually, I was wandering why all the kids in PC world were drawn towards the Galaxy tabs, could it be the amazing colours ? The retina display really takes some beating but I think Samsung has done it. I could not really see any reason to upgrade my Retina iPad to an iPad air since it’s the same screen and has the same Apple limitations ( ie. no SD card, no GPS, no file Level access…)
What does this say about the future for these two platforms ? Well in my opinion Apple still wins the day in terms of mass appeal to people who just want a product that works, is intuitive and well designed. Android though is now the most popular OS on the planet and besides, who doesn’t want to learn Java 🙂
- Learning Java For Android (Jeff Friesen)
- iOS 7 Programming Fundamentals: Objective-C, Xcode, and Cocoa Basics ( Matt Neuburg)
- Programming iOS 7 ( Matt Neuburg)
- Learning Android (Marko Gargenta)
- Lynda.com: iOS Essential Training, Objective C Fundamentals, Introduction to Swift ( Simon Allerdice)
- LiveLessons: Getting Started with Android App Development (Marko Gargenta)