No matter what benefits accrue from the use of a Web browser for running Web applications (platform independence, sandboxed execution, etc.), fact remains that a Web browser is yet another abstraction layer, and adds to the execution inefficiency. The Web code runs one layer higher, wasting precious CPU cycles, and consuming more memory. The speed lag may be less pronounced on powerful modern desktop systems (in part because Web applications have so far been put to relatively "light" uses), but imagine running the full version of Gmail or Google Docs on even a relatively powerful mobile device such as the iPhone (inside Safari browser) at an acceptable speed - it's laughable...
And so since many months, I was wondering - why doesn't Adobe / Google / Mozilla or a startup develop a product (either a complete platform by itself or a browser plugin) that allows "sandboxed execution of native code".
I'm delighted to see Native Client, Google's project that does just the same thing - sandboxed execution of x86 application code inside a Web browser. What's more, the characteristics we typically expect from browser-based applications - browser-neutrality, OS-independence and security - are preserved. Bravo Google! I see this project (and also JavaScript engines such as V8, that compile JS code to native-code) as game changers (albeit I believe it will take at least a year before Native Client gets a decent amount of traction, and at least 2-3 years before it starts getting widespread adoption).
My personal feeling is that this is a nail in the coffin of desktop applications the way we've traditionally known them. This makes it possible to securely run the full Photoshop inside a browser. And this is the technology (or a derivative thereof) that will eventually subvert / supercede the myriad of technologies fighting for domination as the choice for applications served from the Web (Web browsers, Adobe Flash, Microsoft Silverlight, Adobe Integrated Runtime, Sun Microsystems JRE/JavaFX, Mozilla Prism, etc.). To be fair, it's not the first time that native code is being run in a browser - that credit deservedly goes to Microsoft, whose ActiveX has long had this ability, albeit infamously insecurely (there is a reasonable probability that ActiveX can get a second life, if Microsoft evolves the technology to make it more secure). By creating a viable application platform layer at the browser level, Google further undermines the role of the operating system as a software platform, unlocking the long-held hold of Microsoft and Apple on their respective software ecosystems. Over the long term, NaCl poses a serious threat to these now-popular operating systems.
Of course, Native Client is still at a fetus stage. It will progress in both evolutionary and revolutionary ways, and my belief that it will be a game changer factors in this expected evolution. Native Client has the essential quality any would-be contender as the dominant software platform must possess - cross-platform and cross-browser support (support on mobile platforms such as Android should follow in some time). Looking at it from an inverted perspective, I see no reason why Native Client shouldn't succeed. Finally, I see Native Client getting bundled with Chrome down the road (the way it has been with Gears).
Chrome (secure architecture + inbuilt search) + Gears (offline) + Native Client (heavy duty functionality + speed) = A fulfilling user experience for various types of applications and content.
I'm wonder why this project didn't get as massive coverage in press as I believe it deserves... Does my post on journalism provide some indirect (*cough*) explanation (read ranting...)
Hi Rishbah - I wrote something similar on my blog about this as well.
ReplyDeletehttp://evolving-software.blogspot.com/2009/01/flash-native-client-and-youtube.html
@A.I. Guy
ReplyDeleteIt has been around 8 years since this post, but we still don't see NaCl code!