Mobile development is doing any kind of development for any kind of mobile device.
Somewhat of a rhetorical definition, but stay with me here.
What I mean by this statement is that mobile development encompases developing apps for phones, tablets, smart watches, and all other kinds of wearable devices which run some kind of mobile operating system.
It also doesn’t necessarily mean developing purely mobile applications, since even web developers today have to think about how their applications are going to be used and accessed on a mobile device.
In fact, as we’ll discuss a little later in this chapter, mobile applications can even be developed exclusively for mobile devices but entirely as web applications. This may even be the trend of the future as mobile devices become more and more powerful, and the browser takes an even more dominant role as the operating system of the future.
Major Mobile Development Platforms
Throughout computing history, there have actually been quite a few different mobile application development platforms, but until recently, mobile development had not taken the limelight and no dominant platforms had existed.
That all changed with the introduction of the iPhone back in 2007.
I remember back when I first started doing any kind of mobile development, when the Palm Pilot first came out.
One of my first entrepreneurial ventures—and probably the first application I completely built on my own—was a Magic: The Gathering Life Counter application written in C for Palm OS.
Since then, many mobile experiments have flourished for some time and then died on the vine.
Windows CE seemed so promising, but they just couldn’t get it right.
Blackberry looked like it was going to dominate the world, and perhaps it did for a time.
But today—at least at the time of writing this book—there are two main contenders, and then there’s the rest.
iOS
iOS is quite arguably the “big dog” when it comes to major mobile development platforms, partially because it was the platform that finally brought mobile development into the modern day and age by completely transforming the idea of a mobile device and mobile software.
iOS is, of course, developed by Apple, and it runs exclusively on Apple products.
At the time of this writing, iOS runs on iPhones, iPods, iPads, Apple Watches, and Apple TV, but I expect there will be more devices which will run iOS in the future.
iOS at its core is very Unix-like; it is based on Darwin (BSD) and OS X.
It shares some important frameworks with OS X, and its user interface is based on Apple’s Cocoa UI, which is used in OS X applications, but has been modified and redesigned for touch devices and called Cocoa Touch.
Apple provides iOS developers with several native tools and libraries to develop iOS applications, and, although you don’t need to use Apple’s development tools to build your apps, you do have to have a Mac running OS X to build your application.
iOS applications are typically built utilizing either Objective-C or the now more popular development language for the platform, Swift.
Android
If it’s not iOS, it’s probably Android or both.
Android is the other dominant player in this space.
Android was a little later to the game, first being released in September 2008, almost a year later than iOS, but it has still managed to gain a pretty large share of the mobile market.
Technically, Android is the mobile OS with the largest, most dominant share of the market, weighing in at around an 80 percent share compared to iOS’s 18 percent share.
Those numbers are a bit deceiving since Android is a fragmented market, consisting of many different devices made by different manufacturers, running different versions of the Android operating system.
That is the primary difference between iOS and Android.
Android, backed by Google, is open.
iOS, backed by Apple, is not.
Anyone can build an Android device, and it is designed to run on a variety of different hardware platforms and devices with very different form factors and capabilities.
iOS is designed to run, and only runs on, a specific set of Apple devices.
Android is based on the Linux kernel, and the source code for Android is released as open source by Google.
Like Apple, Google provides some native tools for Android development, but again, you aren’t required to use them.
The native development platform for Android OS application is Java.
Others
Everyone else left in the mobile OS market shares a measly, less than 2 percent share of the overall market.
Of the remainders, Windows and Blackberry are probably the largest, but still mostly inconsequential.
It’s probably a matter of time before both of those mobile platforms completely disappear.
Because of their small market-share, I won’t even talk about the others since I wouldn’t encourage you to waste your time investing in any platform that has an extremely high chance of dying, but I’ll say that there are some options for developing cross-platform mobile applications—which we’ll talk about a little later on—that will allow you to develop for these marginal competitors at virtually no extra cost.