Need for speed in the browser
There’s a lot of talk about Google Wave these days and it seems like more and more is getting invented to keep us from ever wanting to leave the browser. Another technology that has not gotten quite as much attention is the Google Native Client, which with help from the open source community is currently being refined after the release about a year ago. I watched an online video about it and was very impressed with what they are doing. The video is somewhat more focused on security measures than on what features will eventually be offered to the end-user, but I recommend watching it to anyone interested in computer science.
For the end-user, Native Client enables secure execution of native code in the browser with very little overhead, which means it’s possible to execute computationally intensive software such as games. Native code execution is already possible through techniques such as ActiveX for Internet Explorer and NPAPI for other browsers, but those techniques can lead to security issues – if you accept execution of a plug-in of this kind it can basically do whatever it wants to your computer, which means you really need to trust the provider before accepting it. With Native Client, you once accept the Google Native Client plug-in to install and after this, arbitrary 3rd party Native Client modules can be downloaded and executed without any warnings or pop-up dialogs. Native Client makes sure (or at least tries very hard to make sure) no bad code is executed. Direct access to some resources such as the file system and network is prohibited for security reasons and this of course to some extent limits what kind of applications can be built without further workarounds.

Quake in the browser
I think Google’s Native Client has a lot to offer to software people. Not many other techniques for browser applications offer the possibility to securely run multi-threaded programs with close-to-desktop-application performance and it kind of provides a shortcut to web applications for those who never bothered to learn the web-specific techniques. Programmers can use code from existing applications and after some slight modifications use the Native Client tool chain to build a corresponding Native Client module that can be run in the browser. The modules are OS and browser independent so once you have ported your application (or built a new one from scratch) it can be executed in any of the supported browsers and operating systems.
The Google team at an early stage ported the classic game Quake to this new platform to demonstrate its capabilities and if nothing else, this technology should open for an online revival of games from the ‘90s. It is very possible however, that the impact of this technology will be bigger than so – Native Client is now built-in to the Chrome browser by default – no plug-in installation required.





