Wednesday 15 September 2010

Cross platform mobile app development methods for iPhone, Android, Blackberry and Java

Cross-platform support is one of the greatest challenges for developers, advertisers and service providers that offer their service through mobile apps. During the past 4 years we have evaluated the pros and cons of different cross platform development methods and tools and assorted the key advantages for a company from an app development point of view. The main methods and conclusions are presented below.


1. Web runtime apps (sometimes referred to as widgets)

For web runtime apps (sometimes referred to as widgets) the development is done in script languages typically using HTML, Javascript and CSS. Later they run within a shell on each platform (iOS, Android, Blackberry OS, etc). Solutions, such as Phonegap (adaptations thereof and other in-house tools) using this technology will only work for simple apps and are always behind in terms of supporting new OS versions and devices. The advantage is write once / run on many but the disadvantage is that most proprietary features won't work, e.g. pinching on maps on the iPhone. This is the lowest cost solution other than just developing a mobile website.


2. Source code porting

Source code porting means writing for one platform (e.g. Java) and then cross-compiling the code to other languages or OS. Innaworks is an example for a company using this technology. Although it looks very promising at first, we think that this is primarily a solution for game developers that don't require proprietary platform support. The advantage is that the developer can stick to one code base. The disadvantage is that the user experience usually becomes a compromise and that proprietary platform functionality is not supported.


3. Native development for each platform

Native development means to develop the app individually for each platform. Usually the iPhone, Android, Blackberry and Windows Mobile development will be done by different developers as each platform requires specialised skills and experience. The advantage however is that the apps are optimised for the best experience and
to exploit the functionality on each platform. The disadvantage is that, for each platform version of the app, the developer almost has to start over from scratch. This generally means very limited synergies in terms of cost and lead time. Even worse, the maintenance of the multiple platforms become more and more expensive over time.


4. Component based cross platform development

What developers want the most are tools and methods to make the native development and app maintenance more efficient. Golden Gekko has developed a proprietary platform called Mobile Media Engine (MME). It simplifies the development by though components for common challenges such as memory management on iOS, screen size scaling on Android, User Interface on Android (similar to iOS but with platform specific advantages), keyboard input on Blackberry, etc. The components allow the developer to use similar coding conventions across all platforms which vastly increases the quality and speed of development. At the same time it reduces the cost of maintenance when updating multiple platforms. Currently this platform is only used internally but in the future we plan to open this up for partners and third party developers.

For more information about the cost of mobile app development for each platform see our previous blog on the costs of developing a mobile app.

1 comment:

TheRohan said...

Create powerful apps for the world’s most popular smart phone platform with Symbian C++
Symbian provides a secure, reliable operating system for smart phones and is created in Symbian C++
Symbian C++ has been designed to run efficiently on devices with relatively limited memory and power resources. Several elements of Symbian C++ therefore differ from desktop C/C++ because of these requirements. Specific examples include a leaving mechanism that protects apps against a lack of requested resources and special handling of data through descriptors. While these mechanisms may be unfamiliar at first, once mastered they enable the coding of robust and efficient apps.
For othr info check this: http://www.forum.nokia.com/Develop/Other_Technologies/Symbian_C++/