Mobile development also represents an entrepreneurial opportunity that is well within most programmers’ reach.
Not to say that an ambitious software developer couldn’t build a web application or desktop application by themselves, but mobile development is so much more accessible because mobile apps are expected to be small and singular in purpose.
However, mobile developments represent more than just an opportunity for the solo-developer to build their own project it’s arguably the future of development, as mobile devices are becoming larger and larger parts of our lives.
What Is Mobile Development?
Mobile development isn’t just about building phone apps, although that is certainly a large part of it. Mobile development is doing any kind of development for any kind of mobile device.
What I mean by this statement is that mobile development encompasses developing apps for phones, tablets, smartwatches, and all other kinds of wearable devices that 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.
Major Mobile Development Platforms
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.
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.
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.
How Mobile Development Is Done
There are countless frameworks, tools, and entire platforms and ecosystems for developing mobile applications.
Just about every programming language is supported in one form or another, and mobile applications can even be built to run exclusively in a mobile browser. Even though there are many options available, we can group them into a few larger categories.
Obviously, we can natively develop mobile applications using the tools the mobile OS vendor provides for us.
For iOS, this was initially XCode and Objective-C, but Apple created a new language called Swift, which is now the language of choice for developing iOS apps.
In the Android world, not much has changed except that Google has put out its own Android Development Studio IDE. Java is still the preferred language (although, if you are really brave, C/C++ is officially supported).
The biggest issue with native mobile development is that you have to completely rewrite the code for your application for both iOS and Android. (If you want to support Windows Phone or another small platform, you must do the same for that platform as well.)
If you want to create an iOS and Android version of an application, you have to be prepared to learn two very different, evolving platforms.
Native development does have a few advantages. The biggest one is raw speed—although some cross-platform frameworks like Xamarin can match it since they compile down to native code. We’ll get to that in a minute.
Aside from using a framework that compiles down to native code, native code is pretty much going to be faster than any other solution. If you develop natively, you are also going to have better-debugging tools since you won’t be operating with several layers of high abstraction.
You are also more likely to be able to take advantage of some of the native features of the platform and get closer to the hardware level.
Cross-Platform Frameworks and Tools
The next option is to choose to use a framework or tool that is designed to allow you to build cross-platform mobile applications. There are many of these solutions to choose from depending on what you are looking for.
Some of these solutions actually produce native code and wrap the real native libraries, so they are just an abstraction over the native language and tools, but they still require you to know and use the native libraries and frameworks.
Other solutions will build a hybrid application that has some native components and some web-based or HTML components and relies on the built-in mobile browser for creating most of the user interface and functionality of the application.
There is an ever-growing list of options to choose from, so choosing can be difficult. The main considerations to think about when choosing a cross-platform framework solution are:
- What programming language you should use.
- Whether you want to take a native or hybrid approach.
- How many platforms you want your code to support.
- Whether you can reuse code or not.
What programming language do you want to use to code the application you are building? Most cross-platform solutions support a single programming language.
You might not want to incur the learning curve of a new framework, mobile development, and a new programming language all at the same time, so you might want to pick a cross-platform solution that supports a language you already know.
Native or Hybrid
There are several cross-platform solutions that compile the final code down to the native format for the mobile operating system and hook directly into the native libraries and APIs.
Typically, native is going to be faster and look and feel more like the mobile platform the app is running on, but some of the cross-platform, hybrid solutions are getting so close to native that is can be difficult to tell the difference.
Another major consideration is platform support.
Just about all cross-platform solutions support iOS and Android, but some cross-platform solutions also support desktop operating systems like Mac OS X or Windows, and others support the smaller phone OSes or even Raspberry Pi.
If you need to support Blackberry, because that is what your customers are using, you will be constrained to cross-platform solutions which support it.
Finally, you should consider code reuse.
Just because a framework is cross-platform doesn’t mean you’ll be able to write all your code for the application once and have it run on all the supported platforms.
Typically cross-platform solutions that offer native support will have less code reuse because they will be tied more closely in with the native frameworks, libraries, and user interface elements and paradigms.
Therefore, you might have to choose between being more native and having the look and feel and design of the mobile OS platform you are running on or sharing more code.
Recently, though, cross-platforms solutions like Xamarin have come out with solutions that allow you to get some of the benefits of both.
Ultimately, code reuse depends on what kind of application you are building and how much you want the application to blend in with completely natively-built applications on the platform you are targeting.
Mobile Web Apps
Finally, you can decide to build a mobile application that is completely web-based.
Over the years, this option has become more and more feasible as the power and capabilities of mobile browsers have increased and adaptive web technologies have improved.
With this option, you build a web application, just like any other web application you would build on the web, but you would specifically design it to work on mobile devices.
Many mobile OS browsers even have hooks to support invoking native functionality from inside the web browser, so you can do things like getting location data and access things like the camera on the device.
There are even quite a few frameworks out there to help you create mobile web applications that look like native applications when running on a particular mobile OS.