Mobile Application Development - bounswe/bounswe2024group8 GitHub Wiki

Mobile Application Development

Mobile application development is the process of creating software applications that run on a mobile device. A typical mobile application utilizes a network connection to interact with remote computing resources. Therefore, the mobile development process involves creating installable software bundles (code, binaries, assets, etc.), implementing backend services such as data access with an API, and testing the application on target devices.

Mobile Applications and Device Platforms

In the modern smartphone market, there are two dominant platforms: iOS from Apple Inc. and Android from Google. iOS powers Apple's line of iPhone smartphones, while Android is used by various OEMs to build their own smartphones and smart devices. While there are similarities between the two platforms, developing for iOS versus developing for Android requires different software development kits (SDKs) and development toolchains. Developers can target both platforms to reach a wider audience, but they must adapt their applications to each platform's specific requirements and guidelines.

Alternatives for Building Mobile Apps

There are four major development approaches when building mobile applications:

Native Mobile Applications:

These are developed using platform-specific languages and tools, such as Swift or Objective-C for iOS and Java or Kotlin for Android. Native apps offer high performance and access to device-specific features but require separate codebases for each platform.

Cross-Platform Native Mobile Applications:

Developers use frameworks like React Native, Flutter, or Xamarin to write code once and deploy it across multiple platforms. Cross-platform native apps offer code reusability and faster development cycles while maintaining a native-like user experience.

Hybrid Mobile Applications:

These apps are built using web technologies (HTML, CSS, JavaScript) and wrapped in a native container. Hybrid apps can access device features through plugins and offer a balance between development speed and performance, but they may not provide the same level of user experience as native apps.

Progressive Web Applications (PWAs):

PWAs are web applications that use modern web technologies to provide a native app-like experience. They are accessed through a web browser and can work offline, send push notifications, and be installed on the user's device. PWAs offer cross-platform compatibility and easier maintenance but may have limited access to device features compared to native apps.

When choosing the right development approach for their projects, developers consider factors such as the desired user experience, required computing resources and native features, development budget, time targets, and available resources for app maintenance. Each approach has its own advantages and disadvantages, and the choice depends on the specific needs and constraints of the project.