In the last few years, the rate at which new standards such as HTML5 and CSS3 are being improved and implemented has increased significantly. After years of stagnancy with HTML4, browsers are once again rushing to embrace the latest standards in order to remain competitive.
One of the more interesting things about the latest iteration of HTML is that it intends to make the whole process of rendering a web page fool proof. One of the big issued of the previous generation of standards has been the way browsers handle pages that are non-standards-compliant, and how that differs across different browsers. This necessitated the use of tricks and per-browser code that made web development hell. HTML5 does away with all that by defining the rules for rendering such erroneous pages a part of the standard. So with new generation standards, one can expect the same rendered output across all browsers across all platforms –if the browser itself is standards compliant of course!
If you feel that mobile devices lack when it comes to standards support, know that this is not the case. Most mobile OSs today ship with a modern browser that supports the latest web standards. In fact browser statistics reveal that mobile devices are better prepared for newer standards. All major smartphone platforms, iOS, Android, BlackBerry, MeeGo, webOS, and bada include browsers with good support for emerging standards. The only platform lagging in support is Windows Phone; hopefully not for long.
It is safe to assume that the device capable of running your application also have a standards-compliant browser. More so on mobile platforms than on desktops actually.
Another important fact to consider is that unlike desktop platforms, mobile OSs offer a limited set of APIs that restrict access to the device. The web offers an even more restricted set. However if you can create the same experience using web APIs as the device APIs might as well stick to the web!
The web is also incredibly open, and that is something to embrace. The Apple store (or any other store) could block your application based on their arbitrary rules, but they cannot block your web applications without crippling the device’s browser.
A number of platforms are now embracing the web standards as a means to create applications. MeeGo’s successor Tizen is an HTML5 based platform, webOS entirely allows web applications, iOS allows pinning web apps as normal apps, and Android too can have bookmarks on the home screen.
You may wonder though, can you really make a full-fledged application that runs in the browser?
Of course this wasn’t the only barrier. Imagine something like Wikipedia at a time when the internet was still new, slow, and expensive. How convenient would it have been for people to access and edit an encyclopaedia over a faltering dial-up connection, while paying large sums of money for the privilege? No, at that time even something as simple as a mostly text-based encyclopaedia might have seemed unsuitable for the web.
The internet has now reached more people, it has become ubiquitous, cheap, and fast, and the Wikipedia model is thriving. Some now look at the increasing prevalence of web applications with disdain, because apps don’t fit the browser paradigm, but that is changing.
Today it seems odd to use a native email client when it can all be done in a browser. Even though WebMail has all the failings of a website, it is slower than a native client, it is not accessible offline, and it isn’t as well integrated with your system. These disadvantages are fast disappearing though. As more people store their photos and documents online, it is only a matter of time when editing them online will feel as natural.
Imagine an online image editor created a decade ago. Such an “application” would not have been able to read a local image, or manipulate it in the local browser. At most the user could select an image, upload it to the server, specify some operations to perform, and get back an edited image to download. Also such an “application” would not work offline, and would be terribly slow if your images were even a few MB. It is obvious why no one would use such an app.
It is unlikely that web based applications will ever reach the same parity in performance or features as native applications, however they can offer a different set of advantages that can weigh the scales in their favour. Web applications are easier to develop and update, and all your users run the latest version.There is no need to install the software, or uninstall it, just open the site and it works.
The web as a platform is becoming increasingly powerful as new standards continue to be proposed based on actual needs of developers. You can see a list of some of the things that you can achieve using new web standards in the sidebar.
Is there really an advantage to go native now? Sure performance is a concern if your application requires heavy processing. Or is it? Consider YouTube, each uploaded video is converted to a plethora of formats that are to run on all manner of devices. Many YouTube users are uploading from devices that aren’t even powerful enough to encode video, so YouTube does it for them. Another example is Autodesk Homestyler that lets you model houses in 3D in your browser; these can then be rendered in high quality by Autodesk servers so they can be viewed even by users having systems too slow to do the rendering. As you can see, in these cases, the performance of a web application can be significantly more than that of a local app. You will find that most disadvantages have a counter advantage.
We have now grown used to the concept of offline apps, or apps that don’t need an internet connection to work. However even native applications are increasingly becoming internet aware, and thus internet dependent. Whether it is for activation or updates, or even for downloading the application in the first place! Internet is becoming a requirement.
Today an average user will browser the internet for an application that fits their need, download it, install it, and finally run it. If it costs, then you have to pay for it and probably activate it as well. This process may need to be repeated for each update or upgrade.
Now compare this to a web application. You browse the web for an app that matches your needs, you open the app, and it just works! If you need to create an account, that is an added one time process, and payments are usually recurrent with no need to pay for upgrades. It is actually more convenient to open the website since downloading and “installing” the software isn’t required. Add to this the fact that you can do this whether you are running Windows, Linux, Mac OSX, iOS, Android, BlackBerry or any esoteric OS running on any esoteric device as long as it supports a web standard capable browser, you don’t need to pay again for a license. In the end, the process of using a web application is also one of downloading (your browser does this, and if supported it caches it), “installing” (or creating a bookmark), and then launching (via the bookmark or URL).
Today if you are looking to create an application that will reach mobile, tablets, desktops, and perhaps even TVs, there is one “runtime” / platform you could consider developing for; and that is your browser.