NAVmoble - the pocket-sized ERP
Optimized for Microsoft Dynamics NAV and Windows Mobile powered devices

Monday, February 08, 2010

Cross platform mobile development

 

The mobile device market is quite fragment these days. We have the mighty iPhone , Andorid , Blackberry,Simbian, Maemo, Brew ,Windows Mobile powered devices and so on.
Publishing software compatible with all these mobile platform is quite a challenge. What is the current situation , regarding the mobile cross-platform development?

The Market

I will not make an exhaustive market analysis here, but will share some thoughts. The mobile device market is changing rapidly during the last few years. One reason is the entrance of the new major players – iPhone and Andorid.  They forced the old players like Nokia, Sony Erricson , RIM, Microsoft and everybody else to hurry up and catch the train. Apple gave us the new fresh air, which the mobile business needed for years. The old dinosaurs chasing low-risk profits forgot about the main engine of the current technological business – the innovation!
Apple was the one to make them remember that innovation (both technological and business) is not a dirty word and actually may increase profits. Yes the innovation and risk go hand in hand, but that’s way : ideas, passion, commitment and risk.

No more drama! I’m back on the topic….

The following chart provides information about the preferences of the users to some of the current mobile platforms: image

the chart is copied from PDASNEWS.COM

The chart is to gave the overall tendency. And the tendency is we do not have a major player and it is still important to target multiple mobile platforms with a single code base.  I must say that the figures here are showing the end-user preferences. The preferences of the business user are quite different, because besides the fancy UI and the improved user experience there are may other factor considered by the businesses like robustness, security, development experience, management, integration to existing infrastructure and others.

The ability to target multiple mobile platforms is dependent on the organization skillset and the corresponding platforms development tools. The following table contains a brief comparison between some of the major players in terms of development tools and technologies:

 image

the table contains information from the following source

The table is focused over the official ( standard ) tools provided. Some of the platforms provide support for additional development tools /technologies not mentioned here.

It is obvious, that the native development tools may not be used for cross-platform development.  The Native APIs toolsets are very different.  The Adobe Flash and Java are not supported by iPhone. The Andorid’s Dalvik VM is not aligned with the Java ME standard, so in general, the Java ME development is not an option. There are third party Java VMs for Android like the MicroEmulator.

The actual decision about the dev tools is mainly business driven. It is important for the organization to identify the platforms, which will provide the best business outcome for specific project. So, if you target the iPhone market only  - go and place Objective-C on top of your skillset. If you target Symbian and BlackBerry – go with Java ME.

Aside note:  The development limitations are sometimes not just a technological limitation, but a limitation created on purpose driven by the vendor’s marketing war to lock the developers on their platforms. I think Google and Apple are the champs here!

The HTML/Javascript approach

A very discussed approach lately is the HTML/Javascript development – a.k.a. Web/Internet/Ajax development. The table shows that each of the platforms provide HTML/Javascript support. It is very important to note that the actual support for javascript and HTML may differ between the platforms  but it is still an option.
There is criticism about the approach mainly related to the following:

  • Connected model
    In general the HTML/Javascript apps requires connection with the application(web) server.  The limitation is coming  from the limited access to the underlying platform resources and the lack of persistence for example.
  • Sandboxing
    The Javascript code is running in a sandbox and in general (some platforms provide proprietary Javascript extensions) there is no programmatic access to the file system, relational databases, device hardware (gps, Bluetooth, serial comms, accelerometers and others), graphic libraries, …

However, there are number of technologies/products determined to give a solution for the sandbox problem by providing a native-to-javascript bridge to the underlying platform resources.

 

Tools


Following products/technologies providing mobile cross-platform development features:

PhoneGap

http://www.phonegap.com
Open-source (MIT license) project providing device-native container for HTML/javascript applications. The  device-native container serves as a javascript-to-native bridge providing access to location services, accelerometer, SqLite access, file system and more. It is supported on iPhone, Andorid, BlackBerry, Symbian,Palm , Windows Mobile(experimentally) and Maemo
(experimentally) . The project provides a native container app(the javascript-to-native bridge) for each supported platform. However the web app (html,javascript) remains the same for each platform.
Primary skillset:  HTML, Javascript

 

 

Titanium

http://www.appcelerator.com/
Open-source (Apache License 2.0) project supporting iPhone and Andorid. There are plans for BlackBerry support , but not a fact yet. No official plans for Windows Mobile support.
The project is in a beta status and is currently free of charge. The production version will be paid, however there will be free entry version and it will remain open-source.The commercial license price is not announced yet.  
Primary skillset:  HTML, Javascript

Titanium translates your hard won web skills into native applications that perform and look just like they were written in Objective-C [iPhone] or Java [Android]. With over 300 APIs, a thriving developer community6, and the support you need, you can build applications that are more social, local, media rich, interactive, and extensible.

 

 

rhomobile

http://www.rhomobile.com
Rhodes is an open source(GPL) framework to rapidly build native apps for all major smartphone operating systems (iPhone, Windows Mobile, RIM, Symbian and Android). Write your code once and immediately build apps for every major smartphone. These are true native device applications which work with synchronized local data and take advantage of device capabilities such as GPS, PIM contacts and camera.
They are actually providing dual licensing model – GPL and commercial.
  • Primary skillset:  Rubby, HTML,Javascript





    MoSync


    http://www.mosync.com
    MoSync is a dual license open-source(GPL) framework.
    MoSync applications are written in ANSI C/C++ using our bundled Eclipse-based IDE running on Microsoft Windows. From a single code base, MoSync can build the hundreds of device-specific application variants. MoSync relies on specialized function libraries that enable it to port your application to many different mobile devices. Since the MoSync libraries are by necessity not always exactly the same as the standard C/C++ libraries, you will need to tweek you code to get it working in MoSync. However, you only have to fix your code once to be able to run it on all compatible MoSync-supported mobile phones, generating huge savings in time and cost.
    It provides support for Android,Java ME ,Symbian S60 ,Windows Mobile ,Moblin.
    Commercial license will be provided as well, but the price is not announced yet. 
  • Primary skillset:  C/C++

  • 10 comments:

    Anonymous said...

    Thanks for the overview! We just published a few videos showing what you can do with the MoSync platform. They're available on our Youtube channel.

    We're also encouraging developers to port old legacy C++ apps for to MoSync and mobile. :)


    Erik, MoSync team.

    hapharzd said...

    It is good start on mobile cross platform discussion. I wrote small article on challenges for mobile application developer. App market is not mature cause of operator / vendor control the application distribution. Cause of very long testing cycles, Mobile application development is very expensive. Adoption is very slow. How fast a company can develop one mobile application will decide the future of cross platform. MITR is another platform from spicelabs.in.

    Anonymous said...

    Great overview, you rock! Please give your comments on Airplay (airplaysdk.com) too, I know they do kind of cross-platform, even if they only do ARM processors.

    Robert said...

    Then there are other porting frameworks as well:
    J2ME Polish (Java, Android, BlackBerry, Windows Mobile, iPhone); Javaground, and Mobile Distillery, to name the most important ones.

    Ruslan Trifonov said...

    Thank you all for your comments!

    I will take a look at the tools/frameworks sugested.

    Anonymous said...

    Another one: iSpectrum by FlexyCore.
    It allows you to develop native applications for iPhone in Java, so you can reuse easily J2ME/Android application code.
    It ships with an an IDE (as an Eclipse plugin) and a debugger.
    More infos available here

    Anonymous said...

    I just wrote about this on my blog. Thought I would share: http://worldofdrafts.wordpress.com/2010/08/01/mobile-geography-1/

    Anonymous said...

    I think you forgot the easiest one
    Smartface Designer
    http://developer.smartface.biz/

    Anonymous said...

    I stumbled over WorkLight http://dev.worklight.com/ - does anybody know this?

    Many thanks, martin

    Jayneel Patel said...

    Nice blog!!!!! You have done good market analysis. Yes, Popularity of iPhone causes more and more people to develop iPhone mobile application.

    Mobile Application Development