One of the most popular forms of coding in the last decade has been the creation of apps, or applications, that run on mobile devices.

Today there are two main categories of mobile devices: those that run iOS and those that run Android.

Mobile operating systems

iOS (iPhone, iPad, Apple TV)

iOS is a mobile operating system developed and distributed by Apple Inc. It was originally released in 2007 with the iPhone, and today runs on many other devices including the iPod Touch, iPad, and Apple TV.

iOS shares similar roots to the macOS operating system used in modern Apple computers.

Android

Android is an open source, Linux-based mobile operating system. Android was developed by the Open Handset Alliance, which was lead by Google and featured contributions from many other companies.

While originally developed for phones, today Android powers everything from tablets and smartwatches to smart devices like refrigerators.

How to develop mobile apps

Similar to the way mobile devices can be split into two general categories, there are two ways to think about modern mobile app development: Native development or cross-platform development.

Native development

This method of developing a mobile app describes building it for a specific mobile operating system using specialized tooling.

To develop apps for iOS, you need to code in either Objective-C or Swift in XCode, an IDE (integrated development environment) exclusive to macOS.

Apps for Android devices are developed in Java using the Android SDK (software developer kit), which runs on Windows, macOS, and Linux.

There are a number of reasons for developing native mobile apps for each mobile OS including speed, security, and reliability. The big downside is that, if you want to develop an app for both iOS and Android, you basically have to build the entire thing twice.

Cross-platform development

This type of development uses a framework to build an app once, then create versions for both iOS and Android. Here's a list of some of the more popular frameworks:

Ionic
Ionic is open source framework used for developing mobile applications. It provides different tools and services for building a mobile UI with a native look and feel. The Ionic framework needs a native wrapper to be able to run on mobile devices.

Apache Cordova
Formally known as PhoneGap, Apache Cordova is a mobile development framework originally created by Nitobe. Now it's owned by Adobe Systems. With this framework, the developer does not need to know Java or Swift, just basic HTML, CSS, and JavaScript.

React Native

React Native is a cross platform mobile app development framework by Facebook. Like React, React Native allows developers to build mobile apps using JSX, and offshoot of JavaScript. While it has a steeper learning curve than other frameworks like Apache Cordova, React Native allows developers to utilize more native features of the device like the camera without extra plugins.