Intro to Mobile Application Development
Tags: mobile, beginners, java, swift
Published: 2023-10-08 19:08:46

We all know what a mobile app is. Likely you use one or multiple mobile apps everyday... maybe even a couple in an hour. Smartphones completely changed how we interact with technology allowing us to have a supercomputer in our back pockets at all times, and the mobile apps that we download onto them are a huge part of this. In this article, we are going to learn more about the development of these apps including how it differs from web app development, the different mobile app development approaches, and some popular languages that are used in their development.

## What is Mobile App Development?
Mobile app development is the process of making software applications available on smartphones or tablets, typically utilizing a network connection. Because mobile apps do not have to be accessed through a browser, like web applications, they are downloaded directly on to the device and must be developed to operate on the device's platform. This is the primary difference between mobile and web applications. We will learn about other differences as we discuss the development approaches and programming languages.

There are two primary platforms, and if you are a smartphone user, you may be able to guess what those are--iOS and Android. If this is news to you, iOS is the operating system that powers Apple products like iPhones and iPads, and Android is Google's operating system. Unlike iOS, which is only available for Apple products, Android is available to other companies that meet their requirements. These platforms are important when understanding the different development approaches.

## Mobile App Development Approaches
There are four major approaches when developing a mobile app which are differentiated by how they run on the device's operating system. There are pros and cons to each approach which we will take a look at. The main thing to keep in mind when choosing an approach is--what matters most? Depending on if that is runtime performance, access to device APIS, cost, maintenance, or complexity of the code will help determine which approach is best.

Before diving into the information, this diagram Intraway.com explains the relationship the different approaches has with the platform. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6i5ac67c5yuv6pvwca7k.png)

**Native Applications**
Native applications run directly on the operating system for the device, either iOS or Android, and are written in the programming language and framework the platform specifies. Apps using this approach have the best runtime performance and direct access to device APIs, but can be costly to build and maintain. Additionally you would need to create different code bases for each platform as iOS and Android utilize different programming languages.

**Cross-Platform Applications**
Cross-platform applications are a type of native application which do not have to follow the programming language and framework specifications of the platforms, but are compiled into a native application to run directly on the device's operating system. Because these apps must be compiled to run on the operating system, this causes some limitations. Runtimes often perform less than native apps and you are dependent on bridges and libraries to access device APIs and other features. This is not to say that cross-platform apps do not have their perks. Since you are not building directly for one platform, you do not need multiple code bases for your app to work on devices with different operating systems and they are often allow for more cost effective maintenance. 

**Hybrid-Web Applications**
These applications are built with basic web development technology, like Javascript, HTML, and CSS, but are bundled as app installation packages. They do not run directly on the operating system but utilize a framework such as Apache Cordova. This allows the app to run on a 'web container' that provides a browser runtime and bridge to access native APIs. Hybrid-web apps have shared code bases between the mobile and web app. This is a huge advantage since many apps have a web counterpart. Additionally, web developers can utilize their current skill base to create mobile apps, but again because they are not running directly on the operating system, there are performance and feature limitations.

**Progressive Web Applications**
PWAs are another kind of development approach that does not run directly on the operating system. You can think of them almost as home screen shortcuts to a website, because they are not downloaded through the app store. 

## Popular Mobile App Languages
As we now know after reviewing the different approaches, web developers can utilize their current skills to create hybrid-web apps, but if you want to create a native mobile app, then a developer may need to add some new tools to their tool belt. One of these skills may be learning additional programming languages like Swift and Java. These are both popular languages that are used but not limited to developing native apps. 

**Swift**
Swift describes its self as a "general-purpose programming language that's approachable for newcomers and powerful for experts. It is fast, modern, safe, and a joy to write." This open-source language was created by Apple Inc. and is primarily used for creating applications for Apple platforms. Some features of Swift that set it apart are:
- inferred types
- namespaces instead of headers
- automatically managed memory
- no semicolons!!

**Java**
A powerful, general-purpose programming language created in 1995 by Sun Microsystems, now Oracle. All of Android's software development kits which are required to use to build an android application utilize standard libraries of Java. For web developers with a background in C or C++, Java should come naturally as it has a very similar syntax.

In my next article, we will take a deeper dive into Swift and Java and how they are used in native app development.

##Conclusion
After reading this article, I hope you have come away with a better understanding of mobile app development. There is still much left to learn, but having a foundational understanding of the approaches and skills you may need to develop your own mobile app are important first steps.

##Sources
- https://aws.amazon.com/mobile/mobile-application-development/
- https://www.knowledgehut.com/blog/web-development/mobile-app-development-vs-web-development
- https://medium.com/javarevisited/top-5-programming-languages-for-mobile-app-development-in-2021-19a1778195b8
- Photo: https://workwiththebest.intraway.com/blog-post/mobile-hybrid-development/
- https://www.geeksforgeeks.org/learn-java-for-android-app-development-a-complete-guide/
- https://www.swift.org/