Steve Jobs originally suggested iPhone developers would be able to deploy any applications they needed through the device's built-in browser, but that was before Apple saw the light and launched its iTunes App Store.
Since then, even established websites have often chosen to deliver their content to mobile devices using native apps, rather than trying to shoehorn it into mobile browsers. Despite the improvements introduced in HTML5, many developers feel web technologies are still inadequate for the unique needs of smartphones and tablets.
If that is true, it is time for a rethink of how online information services are developed and deployed. In the past, developers built websites first, then adapted the same content for mobile apps. But in today's market, where mobile devices are increasingly the primary means by which users interact with online content, that approach is arguably backward.
What is needed is an evolution in mobile development, similar to what we saw in the early days of web applications. The first enterprise web apps did little more than screen-scrape legacy mainframe output and pretty it up for the browser. But as browser-based computing became the norm, application logic moved off the mainframe, and HTML output became the primary target. Mobile applications are undergoing the same shift. The next generation of information services will treat desktop browsers and mobile app clients as equal citizens, and the same application logic will serve content to both.
Equally important, this transition comes at the same time as another significant sea change in the IT industry, which is the move toward cloud computing. As platform-as-a-service offerings mature, it makes less and less sense for information service providers to host application logic on their own private infrastructures.
Linking devices to the cloud
For application developers, managing both of these migrations at once can be a daunting task. Fortunately, platform vendors are already offering tools to make the transition to hybrid web/mobile apps as painless as possible.
At the recent Google I/O developer conference in San Francisco, the search giant unveiled a new beta version of the Google Plug-in for Eclipse (GPE), a set of tools that allow developers to create, test, and upload applications for Google's App Engine cloud platform, all from within the Eclipse IDE for Java.
Previous versions of GPE-enabled developers to build App Engine applications with integrated support for Google Web Toolkit, a framework for creating sophisticated web-based UIs. The new GPE 2.4 beta adds support for Android apps. In effect, developers can build application logic for App Engine, then simultaneously generate I/O code for web and mobile clients.
Similarly, Microsoft is positioning its Windows Azure cloud platform as a back end for mobile apps — and contrary to expectations, it is not limiting the effort to its Windows Phone 7 OS. The new Windows Azure Toolkits for Devices will include libraries for iOS devices and Android, too.
It is easy to see Microsoft's thinking there. While iOS is one of the top mobile platforms — far outpacing Windows Phone 7 — Apple does not yet offer a cloud computing platform to compete with Windows Azure, Google App Engine, or Amazon's Elastic Compute Cloud. Industry speculation indicates Apple may have something in the works, but unless the iPhone maker moves soon, Microsoft has a huge opportunity to gain a foothold as a mobile back-end provider for iOS apps.
Should you build mobile applications in native code or deploy them using web technologies? It seems the answer is both — and you can throw cloud platforms into the mix. While this is all well and good, however, the move toward a mobile-plus-cloud architecture presents important gotchas that developers need to recognise.
First, hosting any application on a cloud infrastructure presents certain risks. Not least of these is the risk of outages, which can effectively cripple cloud-backed apps. So far, no cloud computing platform has proven itself 100 percent reliable, with Amazon, Google, and Microsoft customers all experiencing outages.
Equally important, as much as developers complain about mobile platform vendors' 'walled gardens', users of cloud computing platforms also risk vendor lock-in. Moving large data stores between services can be extremely challenging, and in many cases application logic will need to be retooled when migrating between providers. A number of organisations are actively pursuing cloud interoperability standards, including the Apache Foundation and the IEEE, but these efforts are immature and there is little incentive for the cloud vendors themselves to cooperate.
But the greatest challenge may be simply finding developers who can successfully bridge the worlds of cloud and mobile development. Both methodologies are relatively new. Demand for mobile developers, in particular, continues to be high, with many companies resorting to outsourcing or expensive retraining to gain the skills needed for creating mobile apps. Finding mobile developers who are equally skilled in building apps for cloud platforms seems almost like asking too much.
Of course, while hiring new talent now might sound like a depressing prospect for project managers, smart developers should hear opportunity knocking. Application development is changing, yet again. Time to hit the books.