Reinventing the Browser
Join the DZone community and get the full member experience.Join For Free
In the last decade, people have thrown away the notion of web
browsers being just a web page renderer. Organizations such as Mozilla,
Apple, Opera, Google, and Microsoft have turned the browser into a
full-fledged application runtime platform. At a the Ajax Experience
Galbraith, the co-director of developer tools at Mozilla, says that
on the surface browsers are getting simpler, but the code is getting
will fundamentally change the way that web applications are built.
HTML5 is becoming a major part of the web landscape by enabling browser-native video, audio, and offline data storage. The Canvas specification could possibly be the most influential technology in HTML5. It's history began with Apple's Dashboard for Mac OS X. The company wanted to make it simpler to create applications on the dashboard. They decided that the browser would be the best tool to accomplish this, so they gave Safari arbitrary graphics rendering. Traditionally, web developers have only had standards for using text, boxes, and images to build applications in a browser. Canvas gives web designers greater freedom in building user interfaces. Canvas is very simple to use and it doesn't need a scene graph. If you want to create a scene graph, the SVG standard is another great tool that can make vector graphics. The advantages of Canvas over a plugin include immediate mobile availability, no startup delay, and full rendering fidelity with the browser.
Browser memory management is also changing the way that web applications collect garbage. Google has created a solution to the slowdowns associated with garbage collection. The method is called generational garbage collection and it splits the heap into two parts: a young generation and an old generation. The browser first analyzes the younger generation and then moves the still-active parts into the old generation. This dramatically reduces the amount of heap that the garbage collector has to analyze on a regular basis.
Jakob Nielson, an expert on web usability, says that people notice the tiniest delays in a user interface. Nielson says that a 1/10th of a second delay is all it takes for a person to feel like the program can't keep up with them. UI threads tend to be the bottleneck when it comes to interface responsiveness. The general solution to this problem is background threads, but browsers don't have them. This is why Google introduced the notion of "workers" in Google Gears. Workers allow you to do things in the background without shared state, which is the danger of threading. Workers provide a sandbox where you can execute code separately but in parallel with the UI thread. Java and Flash plugins can provide full threading and achieve the same effect, but the HTML5 spec for web workers has built this function into the browser.
Desktop-Native Web Apps
Desktop integration is another direction that the browser is going towards. There are a few technologies that are making great strides in this area. Mozilla Prism and Fluid are two examples that let you run web applications from your desktop. Adobe AIR takes this concept even further by giving users the ability to take AJAX applications and run them on the desktop with native services. Appcelerator Titanium is an open source version of the same concept. PhoneGap is another web app integration tool for mobile operating systems that can package up a web application and run it like a native mobile application.
The Web as a Platform
Perhaps most significant change in web browser landscape will be the movement towards the web as an open platform for native application development. Palm's WebOS and Google's Chrome OS are early adopters of this model. As this trend continues, we could see lighter-weight desktops and more freedom from proprietary platforms. More portals like the iPhone App store could emerge for developers to monetize these web-built applications.
A video of Galbraith's talk can be found here.
Opinions expressed by DZone contributors are their own.