This is the first blog of series of three titled “Building business apps for mobile devices should be easy”. The blog series is based on an article by Richard Lancaster, published in MC Press at https://www.mcpressonline.com/mobile/development-tools-utilities/you-want-to-build-business-apps-for-mobile-devices
This first blog covers the topic: How Native, Hybrid and HTML Mobile App types compare
Building business apps for mobile devices should be easy. Firstly, the physical features of mobile devices impose limits on memory, storage capacity and screen size. Secondly, mobile apps typically satisfy a narrow set of business requirements. One might expect that the device constraints and a narrow requirement domain would simplify the task of building mobile apps. However, building business apps for mobile devices can be hard work, especially for companies that have little experience in mobile development and are embarking on new projects.
Companies are often struggling more with the decisions that precede app-building than the actual app building activities itself. As you’re considering business apps, these are some of the decisions you’ll need to make:
- Which processes or transactions are appropriate for mobile apps
- Which mobile platforms to support
- What types of app to use
- What development tools to use
- How to distribute the apps: via an app store or side-loading
The skills of your developers can influence or limit the choices. Which approach should you take?
- Train existing developers who have no mobile skills.
- Hire new developers who have the skills but not the business understanding.
- Outsource the all of the mobile development.
- Just purchase an already-available app.
The decisions are intertwined such that one choice can force outcomes for everything. For example, choosing native apps on one platform determines the platform, reduces the list of suitable development tools, identifies the required developer skills, and excludes most of the other options.
Which app type is the most appropriate for the business requirements? Which app type is optimized for performance or the easiest to build? Are native apps faster than hybrid apps? What app type is the easiest to build? What criteria do you use to assess the options? What action do you take if an app store rejects your apps?
In the end, the differences in the mobile platforms and development tools matter less than a well-thought-out mobile strategy (platform, app type, and development tools), less than the choice of appropriate business processes to mobilize, and less than the quality of the user experience you build into the apps.
Mobile App Types
Mobile apps fit into three categories: native, hybrid, and HTML.
Native Apps
Native apps are installed on a mobile device and compiled to run on the device’s operating system, like RPG or COBOL applications on IBM i, Java on Linux, or C# on Windows. Developers build native apps using languages including Objective-C (or Swift) on iOS, Java on Android, C# on Windows Phone, and C/C++.
Hybrid Apps
Hybrid apps are a combination of two components: the business app and a container (or wrapper). The container is a native app that hosts the business app and provides access to mobile device features including the camera, location services, and sensors. Developers use HTML, CSS, and JavaScript to build the app and tools to package the app with the container.
HTML Apps
HTML apps (also known as pure HTML) are server-based or device-based web applications. The applications are designed to fit mobile device screens or use a responsive design that can adapt the user interface for different screen sizes. In the browser, developers use HTML5, CSS, and JavaScript to build the app’s user interface and business logic, and, on the server, developers use other languages (C#, COBOL, Java, PHP, RPG, Ruby, Python, etc.) for the business logic and data access components.
Developers can also package the application and save it on a mobile device. Mobile device users operate the app using the browser on their mobile device.
App Types Compared
This table presents some of the characteristics and dependencies of each app type.
Characteristics | Native | Hybrid | HTML |
App runs as compiled, executable code | Yes | Only the container | No |
Requires HTML, CSS, and JavaScript | No | Yes | Yes |
Requires access to a server to run | No | No | Depends on use of local storage |
Can access server resources | Yes | Yes | Yes |
Can use the device camera | Yes | Depends on the container | Depends on the device’s browser |
Can use location services | Yes | Depends on the container | Depends on the device’s browser |
Can store data on the device | Yes | Depends on the container | Depends on the device’s browser |
Can use sensors | Yes | Depends on the container | Depends on the device’s browser |
Runs on every mobile device | No | Depends on the container | Depends on the device’s browser |
HTML apps depend on the browser provided with a mobile device and the HTML features implemented in the browser. The HTML5 specification provides solutions for accessing mobile device features from apps developed using HTML. For example, the SQL database API and the offline application HTTP cache are options for equipping HTML apps with offline storage.
Hybrid apps rely on a container (or wrapper) app for access to device features, and the apps can use only the features made available by the container.
Which App Type Is Best?
The short answer is, it depends. Each app type is suitable for most applications, but business requirements may suggest desirable app characteristics.
- Native apps are the most appropriate when animation is a requirement.
- Hybrid apps offer the potential for cross-platform apps with the ability to write once and run anywhere.
- HTML apps are best for ease of deployment or if you want to avoid app stores and side-loading.
However, each app type brings compromise, and that’s the reason for careful consideration when choosing an app type.
Keep in mind, the app type is only one of the factors that influence decisions concerning mobile app development.