How portable is your mobile application?
Guest Post by
Shailesh Shivakumar, Technology Architect, Manufacturing, Infosys Technologies
Smartphones are visibly gaining popularity and mobility is all geared to revolutionize the technology all over again. We see lot of mobile platforms and devices emerging with each passing day. Like other sectors, manufacturing industry too is increasingly adopting the mobile platform. Some of the business cases in manufacturing industry include supply chain access, real time inventory/supplier data for optimizing operations, managing customer/dealer/wholesaler relationships, mobile ERP apps and many more.
The Infosys blog discusses top 5 mobile application categories used by manufacturing clients.
Mobile platform for smartphones is so evolved that we can now draw a perfect analogy between mobile and desktop/server platform. Similar to the server OS, we have highly sophisticated mobile operating systems.
Desktop/Server Application development scenario
Continuing my previous analogy, if I were to write an application in a desktop environment, then I can choose from array of development environments like C, C++, Java, Perl etc. Some of the programming languages are tied to the native OS which needs to be recoded for porting to different platforms. With the advent of Java, portability problem was addressed to a large extent as Java Virtual Machine (JVM) provided an abstraction layer on top of the native OS which runs the java based applications. This lead to WORA (Write Once Run Anywhere) model which became hugely popular. Java became the primary development platform for technology giants like IBM and Oracle.
Mobile application portability
However the app development for mobile scenario is a bit different. There are multiple mobile platforms and we need to make a conscious decision while choosing the mobile platform to start with. Going by the current market share it makes sense to develop our mobile application first on Android platform so that we can reach at least 50% of smart phone users. However if you are game developer or developing an app for a financial firm you would most likely to target customers who run different mobile platforms. As a matter of fact one of the key success factors for a mobile application is to increase its reachability and its discoverability .This brings back the same old problem of portability; we need additional resources to recode the Android application to iOS, Windows Mango etc. Since the user interface, sensor APIs etc. are significantly different across mobile platforms the portability would also require significant amount of effort.
Develop Once Deploy to any mobile...
For me the problem looks similar to the problem we faced for server software before the introduction of Java. One key difference here is that currently no one is playing the role of JVM on all mobile platforms.
Here are some of the options I can think-off in addition to the traditional porting option:
- Cross-platform tools: There are few cross-platform tools like Corona, In the box which tries to address this problem to some extent. They would automate the portability across mobile platforms.
- HTML 5 Apps: Most of the modern mobile browsers (Chrome, Safari, IE 9, Firefox) support HTML 5 standard. We can leverage the open standards related to HTML 5 and CSS 3 to prevent the portability problem. Financial times and Amazon have already tried this (This also has a cost advantage of avoiding 30% commission charged by appstore). However this option has few issues related to look-and-feel, security, performance, native functionalities, discoverabilities etc. An interesting comparison can be found here and here.
- Use hybrid solutions: There are few tools like Phonegap, Rhomobile, appMobi, appcelerator, Sencha etc which provides capabilities to develop in a single platform and deploy the application to multiple web platforms. Platforms like Phonegap allows developer to develop in an open standard like HTML 5 and it will fill the "gap" of native mobile capabilities through its APIs.
I think an ideal scenario would be to develop full-featured application using open standards (like HTML 5) and abstract the application developers from porting issues. However this seems like a distant goal due to the issues mentioned in option#2 above. For the time being mobile app developers need to either port the applications in traditional way or use the tools mentioned in option#3.