IBM Puts Emphasis on App Development with MobileFirst

Enabling efficient development and management of mobile apps for a diverse population of mobile devices has been a major aim of IBM’s MobileFirst initiative, announced on February 21, 2013, since the start of development. This includes expanding IBM’s long-standing relationship with AT&T to team AT&T Labs and its Big Data database on app development and use on its network with IBM’s own large resources.

Just getting apps in the market, first for the Apple iPhone when that burst on the scene, then for Android phones, and then for the Apple iPad and the Android tablets, and now for Windows 8 RT and Pro phones and tablets, has been a major challenge for companies. Their only choice each time a new platform has appeared has been to start over from square one. One result of that is that the Android tablet market has been held back for the last year by the lack of Android apps designed for large screens. Now companies face a similar challenge over again with the the recent announcement of the Blackberry Z10 tablet.

Writing those apps are one thing. Managing five or more different versions of each app and keeping them all in sync through multiple versions as well as multiple iterations of the platforms with different features, capabilities, and displays, quickly becomes an almost impossible, and certainly very expensive, task.

The ideal fix for this problem would be a single platform that allows developers to write an app once and then simply port it across all platforms with no change to its basic code. The problem is that each of these platforms has its own native environment, which is totally different and incompatible with any of the others.

IBM developers, however, did find one thing in common. They all run Javascript. The problem is that Javascript is not close to being a full development environment. But the IBM/AT&T development team decided to push it as far as they could. The result is a the MobileFirst Platform, which is designed to get the most out of Javascript as a development environment for mobile apps. When they were done, they had a way for developers to create “plain vanilla” apps that could do some fairly advance things.

But Javascript has intrinsic limitations and will not support some of the most advanced features. It also cannot be customized to provide the distinctive look-and-feel of each of the platforms that users expect in their apps. An iOS user expects functions like <open>, <help>, and <find> to be in a specific place and operate in a specific way that is different from Android, BlackBerry 10, or Win 8. To turn the Javascript app into something that appears to be built for the particular platform requires native script. At the same time, since these functions will not change with each revision of the app, developers want to keep them separate from the core code.

Write-Once, Run-on-Everything

To accommodate that IBM and AT&T did three things. First, the MobileFirst Platform supports the native languages of each of the main platforms – iOS, Android, Win 8 (RT and Pro), and Blackberry – as well as the ubiquitous Javascript. So developers can work in any or all of those when developing an app.

Second, apps built in MobileFirst actually have two code portfolios. The first is for the core app code, which can either be in Javascript if the app is intended for distribution to a heterogeneous population of end-user devices, or in the native code of any one of those platforms if it is for that platform only. The secondary portfolio is for customization code. If the core app is in Javascript, developers can put native code for each platform in this secondary portfolio to allow the app to provide the expected look-and-feel and take advantages of specific advanced features of the platform. The app then can be distributed to a mixed environment such as a BYOD or consumer environment and will appear to be a native app to users on each platform. But updates can be done once in the core Javascript and distributed to all users without having to manage different app versions.

Third, IBM and AT&T have built libraries of native code for each platform that invoke specific functions or advanced features such as voice recognition or online payments that developers can plug into their app. This makes development easier and faster and means that teams without deep knowledge of the native code for each of the different devices can build apps with advanced features confidently.

Security, of course, is also a growing concern in app development. As part of MobileFirst, IBM has announced a security tool that allows developers to build security testing into the first iteration of a new app, allowing them to identify and fix vulnerabilities in the code before the app is finalized and distributed. All of this is designed to make supporting BYOD inside a company, even one as large as IBM, which uses MobileFirst to support its employees, is as close to native code level as practical.