A new Google research project then… Native Client.
This is being discussed all over the place, but here are my thoughts.
Basically this boils down to a browser plug-in that will load and run compiled x86 modules (for want of a better word). This is native byte-code.
What the Native Client plug-in adds is essentially some security, a sandbox, to your native byte-code. So essentially your module cannot do ‘dangerous’ things in the browser.
As usual, we have pro’s and con’s…
We get speed, and to some, degree cross-platform ease.
Obvious speed enhancements over other runtimes is the use of native byte-code. No JIT compilation for example.
And cross-platform, yes, so long as your compiling to the x86 processor and using the supported library calls.
Also a standardized way of running native byte-code without having to create a browser specific plug-in that end-users need to install and trust.
I think this last point is quite interesting.
Is there really any good reason why you wouldn’t just write a Netscape Plug-in?
That’s what the Native Client is after all.
Well there is the obvious trust issue. At install, more end-users will trust an install of a Google plug-in than company xyz’s. And if the technology takes off and becomes ‘accepted’ then companies like ours have a fairly easy way of coding client side, cross-platform (so long as x86), processor intensive browser based modules.
However, is there really such a demand for this? We have faster and faster JavaScript engines, decent RIA platforms (Flash Player/AIR, Silverlight and hopefully JavaFX).
Well, in specialized cases I can certainly see advantages (e.g. client side specialized image or sound processing for example) but this is not the norm and so leaves this question:
Assuming we are tasked with developing to such a case, do we develop a module for Google’s Native Client plug-in, hope that the user already has this installed, and if not they are happy to install because it’s a Google plug-in?
Or just create our own browser plug-in (which is what Native Client is remember, and we have written many of before) and digitally sign it (so end-users don’t get loads of browser warnings at install time). After all, its usually a specialized market so there will be brand trust already.
Now, these are only first thoughts, I have yet to take the technology for a thorough test drive.
These first thoughts do leave me with this doubt that the technology will take off in a big way.
One thing is for sure, they have done some cool/clever stuff in the sandbox implementation – static analysis of the instructions and dealing with self-modifying code trying to overcome this analysis.

Entries:
Comments:
User: