This is the third blog of series of three. The first blog covers how Native, Hybrid and HTML Mobile App Types Compare and the second blog covers a variety of criteria you need to analyze before you can decide on the Development Tools. This blog series is based on an article by Richard Lancaster, published by MC Press at https://www.mcpressonline.com/mobile/development-tools-utilities/you-want-to-build-business-apps-for-mobile-devices
This third blog covers the topic of Development tools for Mobile apps. It provides an overview of
- Available development tools for Native, Hybrid and Web mobile apps
- Mobile app development/delivery options, considerations and consequences
Development Tools for Mobile Apps
There are many development tools from which to choose when you plan to build native or hybrid apps. If you’ve built HTML applications for desktop or laptop browsers, you already have the tools to build HTML apps for mobile devices.
Native app development uses programming languages, tools, and SDKs built for a mobile platform, including these:
- Apple iOS, Objective-C/Swift using Xcode
- Android, Java using Google’s Android Development tools, or Eclipse with an Android plug-in
- Microsoft Windows Phone, C# using Visual Studio
Developers build apps using a language appropriate for the mobile platform, compile the apps, and deploy them to mobile devices. A compiled and deployed native app is a binary that runs on a specific mobile platform. The tools and development process are similar to building RPG or COBOL applications to run on IBM i servers.
To build an app that will run on iOS, Android, and Windows Phone requires three instances of the app, one for each mobile platform, built using different programming languages that compile binaries that are not interchangeable.
Using C/C++ to develop native apps provides a level of cross-platform code. The APIs differ on each platform, so there’s work to do for each platform.
Supporting native apps on multiple platforms requires a significant development effort when compared with hybrid apps that offer the ability to develop once and achieve cross-platform flexibility.
The user interface is one point at which the tools offer differing methods for rendering the apps screens. One method uses the mobile device’s browser to render the user interface, and most of the hybrid tools support this method. Another method is to package the app with the native control APIs with the result that the app’s screens appear more like native apps than browser-rendered apps.
The tools include support for mobile device features (camera, location, sensors, etc.), but the support differs from one tool to another.
One class of hybrid app tools allows developers to write server applications using languages such as C/C++, C#, COBOL and RPG, and the tools vendor provides a mobile device app that interacts with the server programs. The app and its user interface are native to the device and the app exchanges data with the server. LANSA’s LongRange belongs in this category. LongRange comes in two versions. One version allows applications to be developed in RPG or COBOL (for deployment to IBM i servers) and the other version allows you to develop in LANSA’s high level development language RDMLx (with a choice of Windows, Linux or IBM i server deployment). LongRange apps can operate offline and don’t require a network connection. In offline mode, the native apps access locally stored data and forms that allow users to view and edit that data. When a connection is available, the apps can send data to a server and receive data from a server.
An advantage of building hybrid mobile apps is the opportunity to code once and generate apps to run on multiple platforms. Developers can build the apps using a language of their choice and select a target platform at generation/packaging time.
Developers can design the apps to run on a server or copy the files to a mobile device and run the app from the device.
The HTML5 specification provides access to some of the device features, but developers rely on the browsers to support the features.
Evaluate the Options
What are the options for developing/delivering apps for mobile devices? And what decisions do you face?
Purchase Apps from an App Store
To purchase apps from an app store requires a search for available apps. Set aside plenty of time to search the app stores. Reducing the list by searching for business apps still produces a long list of potential apps. Then you must examine each potential app to determine its suitability for your requirements. Good luck with sending change/enhancement requests.
This is an option only for companies that operate generic processes, where the processes offer no competitive advantage—e.g., small companies with unique products.
Decisions you must make:
- Choose a mobile platform? The app you choose dictates the platform.
- Choose app types? The app developer has made this decision.
- Choose development tools? The app developer has made this decision.
Outsourcing Mobile App Development
Outsourcing mobile app development is a viable option for companies that don’t regard software development as a core business activity and whose IT infrastructure offers no competitive advantage. App development should be faster than using in-house developers with no mobile development skills.
All outsourced activities require diligent contract and project management. Your company won’t be the only customer of the outsourcing company, and your priorities will compete with those of the outsourcing company.
How do you choose a partner? A most important consideration is whether the partner company will be around when you need to update or rewrite the apps (and, believe me, you will).
Decisions you must make:
- Choose a mobile platform? You should choose the platform(s).
- Choose app types? The outsourcing company will help you decide or make the decision for you.
- Choose development tools? The outsourcing company will decide.
Develop Your Own Mobile Apps
Developing your own apps for mobile devices provides more control and flexibility than the other options, but it opens up a complex set of decisions.
Decisions you must make:
- Choose a mobile platform? You choose the platform. Do you select one or multiple platforms?
- Choose app types? You choose the app type, and if you also choose multiple platforms the development tool choice becomes complicated.
- Choose development tools? You can choose the development tools. If you choose multiple platforms and the app type is native, you require multiple development tools or C/C++. If the app type is hybrid, you require a development tool that will support your chosen platforms.
The decisions become more complex if you choose a development tool before the app type. The development tool may determine both the platform and the app type.
Doing nothing is not a feasible option for most companies. Customers will come to expect to use their mobile devices to interact with companies, especially so for companies selling directly to consumers. Companies can improve productivity using mobile apps in their processes. Even industries that see no compelling reason for mobile apps today will face the problem tomorrow.
Decisions you must take:
- Choose a mobile platform? No need to choose.
- Choose app types? No need to choose.
- Choose development tools? No need to choose.
The significant decision is avoiding or postponing the development of mobile apps.
Summing It Up
Upon reflection, it seems that developing business apps for mobile devices is not as easy as one might hope. The reality is that mobile devices and apps will become more pervasive, touching most aspects of life, and companies will be forced to provide their products and services via mobile apps.
So, what do you do? Careful planning is the way to manage the situation. Gather information about customers. Examine your business processes to determine how to use them with mobile devices. Survey your developer skills. Prepare a strategy for going mobile. Build an app to test your strategy.
You could use the decisions discussed in this article to create a decision table or a weighted evaluation to help eliminate or confirm your options.