I’m trying to understand how programs like PhoneGap and Adobe Air work, that allow you to ‘write once and run anywhere’ on mobile platforms. The way I understand it now is that you build your application as a web app using either HTML5, or flash, or I don’t know what, and it takes in those files and converts them to the proper types for each mobile OS. Assuming this is correct, what I would like to know is, what the options for developing web apps that are able to be converted into apps are; and what the most popular platforms to use/learn flash, or html5, or JavaScript, or I have no idea what are.
I want to build a web app to deploy across multiple phone platforms, but I don’t know where to start. Thanks for the help!
You use tools like PhoneGap to access native device API’s through JavaScript. If you don’t need access to these API’s you can write a HTML5 app and install it using “Add to home screen” etc.
As HTML5 matures, more and more of the device API’s are actually directly available through HTML5 (for instance GPS), so depending on what you want to do access it might be in/scheduled to be part of the Device API.
Write once and run anywhere
There are different frameworks that lets you deploy to multiple platforms through the device specific install process. These tools usually work in 2 ways. Run in an embedded browser, or compile to native code.
PhoneGap runs the HTML5 part of your app in an embedded browser. Other tools like MonoTouch actually cross-compiles to native code, so they run on the bare metal.
Cross platform using HTML5
There are plenty of frameworks you can use to make mobile apps with HTML5. These usually help make the app “feel native”, and includes abstractions over device specific idioms that differ between the different devices.
Popular frameworks includes Sencha Touch, JQuery Mobile and a bunch of others.
If you want the users to install the app through the AppStore/Market etc. then a solution like PhoneGap is a good option. If you don’t care about that you can write your app and add a meta tag like
and when you add it to the home screen it’ll look just like any other app and run in an embedded browser without the browser window etc. You can add offline capabilities using HTML5 and synch when users go on-line etc. all just using HTML5.
Have a look at the Sencha touch app gallery to see what is possible with this technology.