1-860-882-1150info@VIAcode.com

White Papers

The Mobile Development Explosion

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.

PART I. GETTING STARTED

Your first key decision is selecting the mobile operating systems and devices for which you would like develop. Key elements of that decision include:

  • The current base of mobile devices in your company or, if you are developing a commercial product used by other companies, the mobile platforms being used by your customers.
  • The versions of mobile OSes you want to support. For example, Apple's iOS is currently on version 6. Will you support versions 4 and 5?
  • If you're going to support multiple OSes, the order in which you will build and roll-out your mobile applications.
  • Whether you'll be building for smartphones, tablets, or both.

Right now, there are four mobile platforms that are credible:

  • Apple iOS
  • Google Android
  • Microsoft Windows Phone 8/Windows 8
  • Blackberry – various OSes, including the just released BB10

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 common features that are part of a mobile OS will you need to use?
  • How much of the application will operate online (connected to the Internet) versus offline (disconnected from the Internet)?

iPhone

Android


Common App Features and Functions

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

  • Accelerometer
  • Geolocation
  • Multi-touch

Data Management

  • SQLite
  • File System IO
  • Copy/Paste

Productivity and Communications

  • Contacts
  • Text Messagin
  • E-mail
  • Phone
  • Bluetooth

Media

  • Sounds
  • Vibration
  • Images
  • Video Capture
  • Photo Camera

Online vs. Offline Use

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.

Thickness

Description

Internet access

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.


PART 2. TECHNICAL CONSIDERATIONS FOR APP DEVELOPMENT

Each of these three application types has a unique set of tools that enable the "Write-Once, Deploy-Anywhere" model:

  • Web Applications. Initially developed for website access and use, these applications can be migrated to work effectively on a smartphone or tablet within a mobile browser, rendering differently for different device sizes and exploiting advantages of touchscreen. Since several popular mobile browsers exist, each browser will require a slightly different version of the final html code.
  • Native Applications. These apps are developed specifically for just one type of mobile operating system...and look and behave like all other apps for that operating system. Development of these apps complies with the guidelines for that specific platform. Native "generators" however, can produce native applications for different platforms, but the app behavior stays constant across platforms. (In some cases, quirky things may occur in usage.)
  • Wrapped Applications. These apps look native to the end user, but are actually run in a virtual machine or runtime environment for the specific language (html, java script, .NET, C, java). The installation process does not differ from that of the native applications.

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.

App Security and Authentication

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:

  • How will you integrate the app with your existing corporate security?
  • Will your corporate firewall allow the app to access information?
  • Have you considered third party authentication providers like Facebook, LinkedIn, Amazon, and Windows Live?
  • Is it safe to save credentials locally on the device?
  • Is it safe to save data locally on the device? Can you guarantee that other applications/people do not have access to them?
  • Is it safe to pass data to/from the server from/to the device?

App Performance

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:

  • Quality of Internet connection.
  • Quality of run-time implementation.

Data Caching and Postponed Synchronization

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.

Release Vehicles

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:

5 Options for Distributing Your iOS App to a Limited Audience (Legally)

App packages and deployment (Windows Store apps) (Windows)

How to Distribute Compiled Windows 8 Metro Applications without Windows Store?

Android. Open Distribution

Avoiding Technical Lock In

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:

  • Does not reference any third party libraries in the generated components
  • Generates well-formatted and easily readable native code

As a result, you always will have an option to continue developing the generated components with full flexibility.

Emulation and Native Debugging

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.

PART 3. CHOOSING THE APP DEVELOPER TOOL

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.

Migrating Web Applications

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:

  1. Application looks good and exploits capabilities, user interface is convenient, but user can see that the application is foreign for the device. For example, buttons in your application has another border than buttons in applications that come with device.
  2. Application looks absolutely native, wearing the same clothes as applications-citizens.

If the first level is enough for you, here are some tips:

  • It is fairly simple to render different appearances depending on the client platform with the feature Display Modes. You can differentiate devices by screen size or by operating system.
  • The Default ASP.NET project template exploits adaptive rendering to look good in both desktop browsers and mobile browsers.
  • The Mobile Project Template and the control library jQuery Mobile (Microsoft) enables touch-optimized UI.

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:

Dev Express DXTREME

Sencha Touch

Wrappers

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:

Technology

Wrapped Language

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
SuperWaba Java
IBM Worklight Java
Drupal PHP, visual


With wrappers that wrap HTML, you can leverage the touch-optimized web controls libraries listed in previous section.

Native Generators

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:

Tool

Meta Language

AnyPresence Visual
webMethods mobiledesigner Java
DragonRAD Visual
Smartface Platform Visual
Infinite Monkeys Visual
Sencha Touch Java Script


PART 4. VIACODE RECOMMENDATIONS

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:

  • Native Generators look great on paper, but most of the products are brand new and relatively untested. Be careful. Our experience is that most are not yet stable enough to be seriously considered as a platform for enterprise application development. At the same time, the tools are establishing so fast that the state of art can change in couple month. Our advice is:
  • Start small. Make sure you get quality code from a simple application and then try deploying to multiple OSes to see what results you get.
  • Pure code is better. Many times, we've run into a lot of companies that are trapped by development tool choices they made many months or years ago. Your code should be portable from tool to tool, and, while tools are expensive and moving between them is painful, the mobile market is new enough that you have to say on the lookout for the next, new thing.
  • Don't forget the server side. Some Native Generators will create code for middleware, data integration, and other functions as well. This is a huge bonus. Our experience is that technologists often neglect the server side – assuming that web and mobile infrastructure is one and the same. It's not. Usage patterns are different, and your mobile apps might need access to additional data sources.
  • For basic apps that aren't native look-and-feel dependent, good choices abound. In the Microsoft universe, the combination of Microsoft .NET MVC 4.5 and jQuery Mobile (Microsoft) does a solid job of creating nice looking web-based touch enabled user interface, if you do not care about native look and feel. If you're doing something internally where look-and-feel takes a backseat to getting the job done, then you'll be happy to learn that the major web development toolsets offer basic mobile tools that are capable and straightforward.
  • There are layers of complexity if you're going native in mobile application development. If you care about native look and feel and the vast majority of your effort is for the device as opposed to a device, plus back-end combination, you can find good solutions, but you need to go deep to ensure that you pick the right tool. Currently, Dev Express DXTREME and Sencha Touch provide controls and development tools that work well in iOS, Android, and Windows; however, the more complex your application, the more you'll need to really examine a wide spectrum of tools to find what you need.

We think that the following tools are mature and stable enough to be considered for enterprise development:

Headquartered in West Hartford, CT, VIAcode builds and delivers commercial or "internal" software products that are "difference makers" for our customers. We radically enhance your technical capabilities by deploying world-class technologists throughout the software development lifecycle to meet your application needs on time and on budget. Contact us at 1.860.882.1150 or Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра..