The very first iPhone did not provide a way for one to install applications, like you did with personal computers. Instead, application functionality was provided via web applications in the web browser. While many very good web applications were developed, it was impossible for them to take full advantage of the phone’s capabilities. The New York Time’s Bits blog has a post titled…
…that highlights specific features in three iPhone applications that it thinks are not possible in web applications. Two of them are like many applications on the iPhone or Android phones that use the phone’s GPS to find the current location and then tailor information for that location. I don’t know about Mobile Safari, but I do know that the Android browser can find location information using the GPS, so that capability is possible for web apps at least on Android.
The third example that Bits provides is Pandora, which plays streaming music. Today I can’t play streaming music in the browser of either the iPhone or Android, but when Flash 10 becomes available it will then be possible to have a Pandora flash plug-in that plays streaming music on Android phones.
I am not personally opposed to mobile applications, but I do understand the problem that exists for developers. Developing an application for all platforms requires writing different programs for each, which requires people to know several different skills. To produce programs for all platforms at nearly the same time a company will need a staff of programmers dedicated to each platform, and the problem doesn’t end there. Once the programs are released they need to be supported, and bug fixes and enhancements are needed over time.
Back in 1995 when it first released Java, Sun thought it was providing the solution to the problem I describe above. Java is still used today, but it has not achieved the original vision of “write once, run anywhere.” My understanding is that much of the development for Android is in Java, but I don’t believe you could simply take an Android application and simply run it in a Java Virtual Machine (JVM), probably because of the unique system calls the Android applications make to the phone hardware.
The emergence of HTML5 might help alleviate the problem, or Java might yet still re-emerge as a solution, but it seems to me that something has to be done to make it simpler for developers to write programs that will run on all mobile platforms. Without a solution inevitably developers will pick one platform over another and that will force consumers, if they want a particular program, to pick one platform over another.