By Polina Cherkasova and Vladimir Nazarov
As touch-enabled mobile devices become fully integrated in our everyday business lives, the number and variety of mobile application development tools has grown dramatically. The marketplace is awash with mobile accelerators, compilers, studios, and components. These tools claim to solve every potential technical development challenge, including shortening the development process or even automatically deploying your app across all major mobile operating systems at once. It's difficult to know what works, what does not, and what you really need to get the job done. In this white paper, we will help you to navigate through the current mobile tool landscape. You will find guidelines and helpful insights on every aspect of developing your app, so your application will be successful … each and every time.
Your first key decision is selecting the mobile operating systems and devices for which you would like develop. Key elements of that decision include:
Right now, there are four mobile platforms that are credible:
Almost immediately, you'll need to make another, extremely important development decision: Whether to create applications that are native to each mobile platform that your organization supports or whether to use tools that promise to enable cross-platform development using a single code base (so called "Write-Once, Deploy-Anywhere" model). While the functionality of each mobile platform is similar, each has an accepted set of interface standards and expected levels of performance on mainstream devices. Looking and acting native is important to end-users, and, if you're developing a product for other companies, delivering something that meets market expectations is critical. The question is: Will cross platform tools get the job done for your application? To determine this, you should begin by answering two simple, but important, questions:
What are the features envisioned for your app? Every mobile device contains a set of common, underlying functions that make applications development faster and much easier. These functions generally include:
Motion, Location and Navigation
Productivity and Communications
Apps can store data and the source code in different locations and thereby enable or prevent offline use. Where data and application code are stored refers to "thickness." Thus, "thickness" will play a role in how your app is developed…and operates. The key differences appear in the chart below.
|Thick Client||Code and data stored on the device.||Can be operated offline, periodically synced with server data or connected in real time.|
|Rich Client||Code stored on the device; little or no resident data.||Used if the data resides mostly on the server side, but there is a high degree of user interaction as if the client was local. Offline functionality is limited.|
|Thin Client||Browser or similarly generic client.||Requires Internet access.|
|Messaging||E-mail, SMS, instant messaging or other messaging technology used as data transport and user interface.||Requires Internet or SMS networks.|
Each of these three application types has a unique set of tools that enable the "Write-Once, Deploy-Anywhere" model:
The access to local resources is very limited with Web Applications but is full or almost full with Wrappers and Native Applications. The tools for each type of application will be reviewed in Part 3 of this white paper.
Mobile security is become increasingly critical as hackers have migrated from the PC world where operating systems are quite secure… to mobile devices, where both operating systems and users are both new and often lack strong security measures and practices. As you plan the development of your app, you will need to address each of these questions:
When testing your completed app under different scenarios or conditions, keep in mind that mobile devices, and therefore your app, will be subject to performance degradation due to a poor Internet connection. If you developed a wrapped application, poor performance could be attributed to imperfect run-time implementation. Be aware of these scenarios:
To avoid performance degradation and data unavailability, consider caching the data locally with postponed server synchronization. In other words, you can convert from a rich or thin client to a thick or messaging client. Good examples of facilities for this are DropBox and SkyDrive. Some Native Generators provide the caching mechanisms out-of-the-box, so you do not have to develop and can instead just configure them. You can also consider integrating with a service like DropBox or SkyDrive.
Each mobile platform provides a number of options for the release your native application, including, among others, deployment via store, deployment by link, and corporate deployment. These resources will help you to pick right release process for your business:
Once you have selected a tool and implemented a cross-platform application, it is extremely hard to switch from one Write-Once, Deploy-Anywhere technology provider to another when it no longer satisfies your needs. Typically, you will end up modifying a lot of code. Here are two suggestions. First, if you used an Open Source tool, you always can contribute improvements or create a branch. Second, if you think you can decide to discontinue using the Write-Once, Deploy-Anywhere capability in future, select a native generator that:
As a result, you always will have an option to continue developing the generated components with full flexibility.
There are many emulators that can model how your mobile app will look on different devices. The emulators come both with mobile development tools and simulators. (See Google Chrome Mobile Simulator and 10 Excellent Tools for Testing Your Site on Mobile Devices). Keep in mind that just because an application works well in the simulator does not guarantee it will work well on the mobile device. It can be quite frustrating when you cannot debug the application on the device in order to find the root cause of the failure. Therefore, ensure that you either have a way to debug the application on device or that your instrumentation is good enough to allow you survive without the debugger.
Here are some guidelines for selecting the right tools for your specific application development effort: Migrating a Web Application, Developing a Native App or Developing a Wrapped Application.
The most popular development frameworks now provide basic mobile development support. For example, Microsoft .NET MVC 4.5, which comes with Visual Studio 2012, includes Microsoft-centric support for web-based mobile app development. There can be two levels of adoption of your application to a device:
If the first level is enough for you, here are some tips:
As you think you need second level of adoption, there are third party, touch-optimized web controls libraries that will make your web pages look native:
A Wrapper is a type of virtual machine that can host the same code on different mobile devices, providing an API for the local resources access. Here are the most popular engines:
|Appcelerator Titanium||HTML 5|
|PhoneGap (Open Source)||HTML 5|
|Marmelade SDK||C, C++|
|MoSync (Open Source)||C, C++, java, java script|
|Rhomobile||HTML 5, Ruby|
With wrappers that wrap HTML, you can leverage the touch-optimized web controls libraries listed in previous section.
Native generators provide a meta-language to define the application. In most cases, it is just a visual designer where you build the application using a mouse. Once the application is finished, the engine will generate a native application for each type of device as well as the server side components. Here are the most popular native generators:
|Sencha Touch||Java Script|
Our team researches, identifies, evaluates, and uses new mobile app development cools constantly. The tools landscape is constantly evolving. Here is our view on the current tools:
We think that the following tools are mature and stable enough to be considered for enterprise development: