Hybrid mobile applications–what is it–what are the tools
As mentioned in a previous blog post I am going to write some observation posts on development tools that can be used to write hybrid mobile applications. What is a hybrid mobile application in my thoughts? I see it as a:
- platform specific native “shell” application
- utilizes a browser control as its rendering surface
- provides an API that gives access to native device functions (camera, contacts, …)
- makes the API available to Javascript running in the browser control
- the application functionality is written using HTML, CSS and Javascript in the spirit of building web apps
- the application specific code can be bundled and ”injected” into the shell application
- the functionality provided by the shell application can be extended with plugins that are written for the native platform and provides additional API functions to the Javascript running in the browser control
There are many other possible ways to think about hybrid mobile apps, but the slice of approaches I’m most interested in is the one where you utilize web standards to build your mobile applications. There is a great blog post by Udayan Banerjee called Cross-Platform Hybrid Mobile Application Development – a Tool Comparison where he goes into great detail on the huge set of different tools that are available in the broad sense of hybrid mobile apps. He divides the tools into:
- Mobile Web (JavaScript-CSS library), (see this)
- Visual Tool (No access to Code), (see this)
- App Generator (Native application for multiple platforms), (see this)
- Hybrid App (Leverages embedded browser control), (see this)
- Game Builder (see this)
I will only discuss tools that are in the Hybrid App space.
See the following post for some of my observations on tools in this space: (not written in the specified order)
- Cordova (to be written)
- PhoneGap / PhoneGap Build (to be written)
- Intel XDK (to be written)
- Red-gate Nomad (to be written)
- Icenium (to be written)
- DevExpress DevExtreme (to be written)
I will update the links when the posts are written.