Mobile Application Development
Mobile app development is the act or process by which software applications are developed for mobile devices, such as personal digital assistants or mobile phones. These software applications are designed to run on mobile devices, such as a smartphone or tablet computer. These applications can be pre-installed on phones during manufacturing platforms, or delivered as web applications using server-side or client-side processing (e.g., JavaScript) to provide an "application-like" experience within a web browser.
Platforms
There are two dominant platforms in the modern smartphone market. One is the iOS platform from Apple Inc and The second is Android from Google. Although there are some similarities between these two platforms when building applications, developing for iOS vs. developing for Android involves using different software development kits (SDKs) and different development toolchains.
Development approaches
There are four major development approaches when building mobile applications
- Native Mobile Applications - Native mobile applications are written in the programming language and frameworks provided by the platform owner and run directly on the operating system of the device such as iOS and Android.
- Cross-Platform Native Mobile Applications - Cross-platform native mobile applications can be written in a variety of different programming languages and frameworks, but they are compiled into a native application running directly on the operating system of the device.
- Hybrid Mobile Applications - Hybrid mobile applications are built with standard web technologies - such as JavaScript, CSS, and HTML5 - and they are bundled as app installation packages. Contrary to the native apps, hybrid apps work on a 'web container' which provides a browser runtime and a bridge for native device APIs via Apache Cordova.
- Progressive Web Applications - PWAs offer an alternative approach to traditional mobile app development by skipping app store delivery and app installations. PWAs are web applications that utilize a set of browser capabilities - such as working offline, running a background process, and adding a link to the device home screen - to provide an 'app-like' user experience.
Each of these approaches for developing mobile applications has its own set of advantages and disadvantages. When choosing the right development approach for their projects, developers consider the desired user experience, the computing resources and native features required by the app, the development budget, time targets, and resources available to maintain the app.
Core components
There are two interlinked core components of a mobile application one is the mobile application “Front-End” that resides on the mobile device, and two the services “Back-End” that supports the mobile front-end.
- Front-End - The mobile front-end is the visual and interactive part of the application the user experiences. It usually resides on the device, or there is at least an icon representing the app that is visible on the home screen or is pinned in the application catalog of the device. The application can be downloaded from the platform app store, side-loaded directly onto the device, or can be reached through the device’s browser, as in the case of PWAs.
- Back-End - Regardless of the size of the team, a critical element of the development effort is building the app logic that is responsible for making network calls to the back-end services, retrieving data, and updating the data in the back-end systems with new information generated from the app. These back-end services are typically accessed through a variety of application programming interfaces, most commonly known as APIs. There are different types of APIs, such as REST and GraphQL, and there are also a wide variety of means and styles of accessing them. While some back-end service APIs are available directly to the application through calls in the platform itself, many of the specialized services have to be integrated into the app via a software development kit, commonly known as an SDK. Once the SDK has been added to the app via the development environment, then the application can make use of the APIs defined in the SDK. Typically, a REST API is used to interact with data sources on the cloud, such as a cloud database. A GraphQL API is also another option for developers, as it makes it easy to work with backend data in a mobile application. GraphQL provides querying support through a single API endpoint, and a data schema that can be used to build and easily extend data models that are used in the app.
Typical Mobile Application Services
There are hundreds of cloud and 3rd party services that mobile application developers can leverage to speed up the development and delivery of their applications. However, it’s unlikely that a developer is going to be able to become an expert in each of these individual services.
Instead, mobile developers should look for a development environment that makes it easier for them to integrate, use, and consume the most commonly required capabilities into their application quickly and easily, while still preserving the freedom to take advantage of the many individual services available.
Essential
- User Sign-up/Sign-in and Management
- Social login (Facebook sign-in, Twitter sign-in, etc.)
- Analytics and User Engagement
- Push Notifications
- Real Device Testing
- Cloud Storage
- Real-time and Offline Data
- Application Logic/Cloud Functions
- Conversational Bots
- Image and Video Recognition
- Speech Recognition