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. Challenges ahead
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.