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 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.
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.
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 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.