Because mobile development offers a once-in-a-lifetime opportunity for a one-person development team to create a complete, useful, and meaningful app in a short amount of time.
Mobile development also represents an entrepreneurial potential that most programmers may make use of.
Not to imply that a determined software developer couldn’t create a web or desktop application on their own, but mobile development is far more accessible due to the fact that mobile apps are meant to be short and focused.
Mobile applications, even in the gaming arena, can be a return to simpler times before 3D visuals and massive code bases.
On a mobile phone or tablet, retro-style games from the 8-bit and 16-bit era are strangely acceptable and even endeared, although on other platforms they aren’t nearly as well accepted.
However, as mobile devices become greater and larger parts of our lives, mobile development is more than simply an opportunity for the lone developer to build their own project—arguably it’s the future of development.
It is feasible to work only as a mobile application developer, both independently and for someone else, at least at the time of authoring this book.
We’ll look at what mobile development is, go through some of the key mobile platforms, and discuss some of the technologies available for mobile development in this chapter so you can decide whether mobile development is a suitable fit for you.
What Is Mobile Application Development?
Let’s begin by defining what mobile development is—not it’s as simple as it appears.
Mobile development is more than just making phone apps, but that is a big part of it.
Any type of development for any type of mobile device is referred to as mobile development.
This is a bit of a rhetorical definition but bear with me.
This statement means that mobile development includes the creation of apps for phones, tablets, smartwatches, and any other wearable devices that run a mobile operating system.
It also doesn’t have to imply designing solely mobile applications, as even web developers must consider how their applications will be used and accessible on a mobile device these days.
Mobile applications can also be designed specifically for mobile devices but totally as web applications, as we’ll see later in this chapter. As mobile devices get more powerful and the browser assumes a more dominating role as the operating system of the future, this may become the trend of the future.
Platforms for Mobile Development
There have been many distinct mobile application development platforms throughout computer history, but until recently, mobile development was not in the spotlight, and no dominating platforms existed.
With the debut of the iPhone in 2007, everything changed.
When I first started doing any kind of mobile software, it was around the time the Palm Pilot was released.
A Magic: The Gathering Life Counter application created in C for Palm OS was one of my earliest entrepreneurial ventures—and perhaps the first application I totally built on my own.
Since then, a slew of mobile experiments have thrived for a while before dying on the vine.
Windows CE had so much potential, but they couldn’t seem to get it right.
Blackberry appeared to be on its way to dominating the globe, and it may have done so for a time.
However, there are two big rivals today—at least at the time of writing this book—and then there are the remainder.
When it comes to significant mobile development platforms, iOS is undoubtedly the “big dog,” partly because it was the platform that eventually pushed mobile development into the contemporary era by entirely altering the concept of a mobile device and mobile software.
- iOS is, of course, an Apple product that only runs on Apple hardware.
- iOS is currently available on iPhones, iPods, iPads, Apple Watches, and Apple TV, but I hope that more devices will support it in the future.
- iOS is built on Darwin (BSD) and OS X, and it has a Unix-like core.
It uses some of the same frameworks as OS X, and its user interface is based on Apple’s Cocoa UI, which is used in OS X apps but has been tweaked and updated for touch devices, and is known as Cocoa Touch.
Apple supplies iOS developers with a number of native tools and frameworks to help them create apps, and while you don’t have to utilize Apple’s development tools to create apps, you will need a Mac running OS X to do so.
Objective-C or Swift, the platform’s increasingly popular development language, are commonly used to create iOS apps.
It’s either Android or both if it’s not iOS.
The other major participant in this market is Android.
Android was a little late to the party, debuting in September 2008, almost a year after iOS, but it has managed to capture a sizable portion of the mobile market.
Technically, Android has the greatest and most dominant share of the mobile market, with roughly 80% of the market share compared to 18% for iOS.
Those figures are misleading since Android is a fragmented market with a wide range of devices from various manufacturers running different versions of the Android operating system.
The main distinction between iOS and Android is this.
Android, which is backed by Google, is a free operating system.
Apple’s iOS, on the other hand, isn’t.
An Android device can be built by anybody, and it is designed to work on a wide range of hardware platforms and devices with a wide range of form factors and capabilities.
iOS was created for, and only works on, a limited number of Apple devices.
Android is built on the Linux kernel, and Google has made the source code available as open source.
Google, like Apple, offers some native tools for Android development, but you’re not obligated to utilize them.
Java is the native development platform for Android OS apps.
Everyone else in the mobile OS market has a meager share of less than 2% of the total market.
Windows and Blackberry are perhaps the most important of the rest, but they are still largely insignificant.
Both of those mobile platforms will almost certainly vanish in the near future.
I won’t go into detail about the others because of their small market share, but I will say that there are several options for developing cross-platform mobile applications—which we’ll discuss a little later—that will allow you to develop for these marginal competitors at virtually no extra cost.
I would never consider developing for one of these platforms solely.
Choose iOS or Android if you want to design a mobile app and work as a mobile app developer.
What Is the Process of Developing a Mobile App?
If you wanted to learn how to design mobile apps for both iOS and Android when they first came out, you had to learn how to use the native tools supplied by each vendor.
XCode and Objective-C were used for iOS.
It was either an Android SDK plugin for Eclipse or Netbeans and Java for Android.
What a difference a generation makes.
There are a lot more possibilities now.
For designing mobile applications, there are a plethora of frameworks, tools, platforms, and ecosystems to choose from.
In some form or another, nearly every programming language is available, and mobile applications can even be designed to run completely in a mobile browser.
Despite the fact that there are numerous alternatives, we may classify them into a few broad groups.
Development of Indigenous Peoples
Obviously, we can use the tools provided by the mobile OS vendor to construct native mobile applications.
As I previously stated, XCode and Objective-C were the languages of choice for developing iOS apps until Apple released Swift, which is now the language of choice.
Except for the release of Google’s own Android Development Studio IDE, not much has changed in the Android world. Java is still the primary language (although C/C++ is officially supported if you’re really adventurous).
I built my first Android and iOS apps natively, but I wouldn’t do it again today.
The most significant disadvantage of native mobile development is that you must totally rebuild your code for both iOS and Android. (If you wish to support Windows Phone or another small platform, you’ll have to do the same thing.)
It’s not a big concern, but apps need to be supported, so trying to support various versions of the same software on two or more completely distinct platforms might be a maintenance headache.
Furthermore, Android and iOS development are almost diametrically opposed.
The tools, the languages, the frameworks, and even the development paradigms are all different.
You must be prepared to understand two very distinct, changing platforms if you want to produce an iOS and Android version of an app.
There are a few advantages to native development.
The most important factor is raw speed, which some cross-platform frameworks, such as Xamarin, can match because they compile to native code. In a moment, we’ll get to that.
Apart from utilizing a framework that compiles to native code, native code is almost always faster than any other option.
Because you won’t be working with numerous layers of high abstraction if you develop natively, you’ll have better debugging tools.
You’ll also have a better chance of using some of the platform’s native capabilities and getting closer to the hardware level. (Though, again, with some of the better cross-platform offers out there, this may not be the case.)
Overall, I believe that knowing how to design native mobile apps is beneficial, but it is not the greatest choice for providing an app across many platforms.
Frameworks & Tools for Cross-Platform Development
Framwork on wheels
The second alternative is to use a framework or tool that is specifically built to help you create cross-platform mobile apps.
Depending on what you’re looking for, you can choose from a variety of these options.
Some of these solutions generate native code and wrap real native libraries, so they’re merely a wrapper around the native language and tools, but they still require you to understand and utilize the native libraries and frameworks.
Other options will create a hybrid app with some native components and some web-based or HTML components, relying on the built-in mobile browser for the majority of the app’s user interface and functionality.
There is an ever-growing variety of possibilities to pick from, making it tough to make a decision.
The following are the most important factors to consider while selecting a cross-platform framework:
- Whether you want to go the native route or the hybrid route.
- How many platforms do you want your code to be compatible with?
- Whether or not you can reuse code.
- Language of Programming
What programming language would you like to use to code the app you’re creating?
A single programming language is supported by the majority of cross-platform solutions.
You may not want to go through the learning curve of a new framework, mobile development, and a new programming language all at once, so choose a cross-platform solution that supports a language you currently know.
Hybrid or native
There are various cross-platform solutions that compile the final code to the mobile operating system’s native format and hook into the native libraries and APIs.
Xamarin is my favorite since it allows you to develop your app in C# while still getting all of the benefits and capabilities of a full, natively-built program.
There are plenty additional things to consider.
Other cross-platform solutions, such as Cordova, utilize a hybrid approach, in which the program is not a native app but appears to be one.
Native apps are often faster and more closely resemble the mobile platform on which they are operating, but some cross-platform, hybrid solutions are growing so close to native that it can be difficult to discern the difference.
Support for the Platform
Platform support is another important factor to consider.
Almost all cross-platform solutions support iOS and Android, but some also support desktop operating systems such as Mac OS X or Windows, while some support tiny phone OSes or even Raspberry Pi.
You’ll be limited to cross-platform solutions that support Blackberry if you need to support it because that’s what your clients use.
However, if you don’t have any specific requirements for platforms other than iOS and Android, I wouldn’t be concerned about cross-platform support.
Games, on the other hand, are a different matter.
If you’re working on a game, you might want to use a tool that supports as many platforms as feasible.
With tools like Unity 3D, you can make games that run on almost any platform you can think of, including the web.
Reuse of Code
Finally, you should think about reusing code.
Just because a framework is cross-platform doesn’t imply you’ll be able to write all of your application’s code once and have it run on all of the platforms it supports.
Because they are more closely tied in with native frameworks, libraries, and user interface elements and paradigms, cross-platform solutions that offer native compatibility typically have less code reuse.
As a result, you may have to pick between being more native and having the appearance and feel of the mobile OS platform you’re using, or sharing more code.
However, cross-platform solutions like as Xamarin have recently released solutions that allow you to reap some of the benefits of both.
For example, Xamarin Forms is a typical UI package that enables for a considerably higher percentage of code reuse between platforms by adding another abstraction layer on top of the underlying operating systems’ native UI and frameworks.
Finally, code reuse is determined by the type of application you’re creating and how closely you want it to resemble totally natively-built applications on the platform you’re targeting.
Web Apps for Mobile Devices
Development of mobile devices
Finally, you have the option of creating a web-based mobile application.
As the strength and capabilities of mobile browsers have expanded, and adaptive web technologies have developed, this approach has become increasingly viable.
With this option, you create a web application in the same way that you would any other web application, but it is specifically designed to run on mobile devices.
Many mobile OS browsers even contain hooks that allow you to access native functionality from within the web browser, allowing you to perform things like obtain location data and access the device’s camera.
There are also a number of frameworks available to assist you in creating mobile web applications that appear to be native when executed on a specific mobile OS.
To be honest, mobile web apps are the way of the future; we’re simply not there yet.