Cross Platform Mobile Development
Posted on January 25, 2012

Mobile development is one of the hottest areas of software development these days. Every website and business wants a mobile app to compliment their web presence which they are fulfilling by taking the assistance from mobile application development companies. There’s tremendous opportunity for growth in the mobile apps industry and we are right in the middle of a booming industry.

Cross platform development may be defined as a concept in computer software development where you write application code once, and it runs on multiple platforms. This is based on the theory of “write once, run everywhere” concept pioneered in the 90s, and brought to a mainstream reality with Flash in the browser, and AIR on the desktop. The standard evolution of technology has been to make everything faster, smaller, and more portable, and it is only natural that this concept has now come into the mobile development world. In mobile scenarios, it is applied by writing an application using codebase & technology that allows the application to be deployed and distributed across multiple disparate platforms/operating systems/devices.

The biggest problem with mobile development is the fragmentation of platforms that exists. In order to hit most of your audience, you must have to deal with iOS and Android development, and depending on your target audience may be Blackberry application development and Windows mobile development as well. This means learning three different programming languages and four mobile SDKs. All this adds up to more development time and higher development costs. Until the platforms can consolidate on a single technology we have to look elsewhere for tools that can help to simplify the dilemma of all these platforms.

Fortunately, there are frameworks available that can help to make the cross-platform problem a bit less of a burden. Some of them are mentioned below:

  • Titanium
  • Sencha
  • jQuery Mobile
  • Phonegap
  • iWebKit
  • JQ Touch

Advantages of Cross Platform Development:

1.    Lower Barrier of Entry: Due to the ease of use of the development tooling and familiarity of the languages, cross platform technologies lower the technical barriers which may have prevented adoption of native development. This enables your team to focus on what matters – the application; not the skills required to develop on multiple disparate platforms.

2.    Reduce the Number of Required Skills for the Development Team: Using cross-platform development technologies, your team only needs to be proficient with one language/skill set. Knowledge of the native development paradigms and languages are always a plus, but are no longer a requirement.

3.    Reduced Development & Long Term Maintenance Costs: Cross-platform mobile applications can originate from a single codebase, which requires a single development skill set. You don’t need to have staff for each individual platform. Instead, resources working on the shared codebase can cover all target platforms. Having a single codebase also reduces long term maintenance costs.

4.    Play the Strengths of a Technology: Some technologies make tasks easier than others.   For example, programmatic drawing and data visualization are very easy using Flex & Action Script. Developing equivalent experiences in native code can be significantly more complex and time consuming. Use the features of the language to their fullest potential, to your advantage- that’s why they exist.

There are other frameworks available similar to both Titanium and PhoneGap; however, another option for cross-platform development is HTML5 application development. An HTML5 web app is built using technologies like HTML, CSS and JavaScript. These apps are accessed through the browser and are not installed through the app store. This can be both positive and negative depending on your goals and how you want to market the app.

Today you will find people who will proclaim that native apps will be dead in the coming years while others say that web apps will never perform as well as a native app can. Regardless of what the future holds, today we are left with this array of disparate platforms that we must support. There is not one best solution that will make this easier for you. The best way is to consider your app requirements, your target audience and how you intend to distributing the app and look at the frameworks available.

Key Differentiators Native Apps Web Apps

Meaning

Native Applications are specifically designed to run on a device’s operating system and machine firmware

It typically needs to be adapted/adjusted for different devices

Web Applications are those in which all or some parts of the software are downloaded from the web each time it is run

It can usually be accessed from all web-capable mobile devices

Technical Difference

A native application developed for the iPhone will need to run on its proprietary iOS platform or on Symbian for many Nokia devices, and so forth

A web app, however, is typically coded in a browser - rendered language such as HTML combined with JavaScript

Internet Access

Not Required

Required, except for rare apps with offline capability

User Interface

Native apps are responsive and functional

Browsers can be clunky, but new advancements in JavaScript like jQuery Mobile are catching up fast

Installation/Updates

It should be deployed or downloaded

Hit refresh

Device Compatibility

Platform and Hardware dependent

Platform-agnostic, content can be reformatted with CSS to suit any device

Media Streaming

There are few problems with audio and video. Flash works, but only if the device supports it

Browser-based audio and video are getting there, but still there is a compatibility issue. Flash works where supported

Discussion and collaboration

Permits only if you build it, and it’s more difficult if data is disparate

Discussion is easy, as all data is stored on a server

Fonts

Tight control over typefaces, layout

Almost on par, thanks to advancements in web standards. Give it six months

Security

Native apps definitely enjoy an architectural advantage in security, as they do not need to connect with the network as frequently as Web apps

Web apps are less secured as compared to native apps due to their network connectivity

Sharable/Tweetable

Only if you build it in

Web links are shared freely. Social APIs and widgets allow easy one-click posting

Development

Specific tools are required for some platforms (like Apple’s). A new app needs to be built for each target platform

Write once, publish once, and view it anywhere. Multiple tools and libraries are available to choose from

Distribution

Most app stores require approval. And so, long waiting time

No such issues

So far we have been mainly discussing the choice between native and Web apps for mobile devices. Personally I believe Web apps will take on a larger mind share among both publishers and consumers, as hardware complexity grows and the desire for immediacy increasingly dominates modern media consumption behavior.