Google hooks Native Client into Visual Studio, Eclipse

'Threat to Mozilla vision' rolls on

Google I/O Google is building an interactive Native Client debugger that will integrate with various popular IDEs. According to Google engineer David Springer, the company will begin with Visual Studio before moving on to Eclipse and others.

"We're starting with Visual Studio because a lot of client programs are already built there," Springer said this afternoon at Google's annual developer conference in San Francisco. Part of Google's Native Client pitch is that it will allow developers to easily move their existing client applications into the browser.

Still in the "experimental" stage, Native Client – aka NaCL – is a Chrome browser plug-in designed to securely run C, C++, and other native code inside the browser. It's included with the current stable version of Chrome – Chrome 11 – but it must be manually turned on. The idea is not only to move existing code into the browser, but also to improve the speed of web applications.

"While the [Chrome] team has made JavaScript tremendously faster over the last two years, there's a lot of applications out there that have existing audiences that are [written in native code, such as C and C++], and there are a few that are specialized applications that need every last bit of performance the hardware can offer. Native Client is a way of addressing both those issues," Google engineering director Linus Upson told us in December.

Spinger said that the platform brought the web's "write once, run anywhere" setup to native code. The trouble is, that at this point "anywhere" means "anywhere that you have Chrome running on a 32- or 64-bit x86 processor". Both Mozilla and Opera have strongly opposed Native Client because it bypasses web standards such as HTML, CSS, and JavaScript. You can eventually achieve comparable speeds with JavaScript, they say, and with JavaScript, you can maintain the world-flattening simplicity of web programming.

Opera CTO Håkon Wium Lie reiterated his Native Client opposition to The Reg just yesterday, and in a public document, Mozilla lists Native Client among the things that "threaten" its vision.

When, following Springer's talk, we mentioned this opposition to Google engineer Eric Kay, he told us it was more accurate to say that the likes of Mozilla and Opera were "taking a wait-and-see attitude. To them, it just looks like black magic, and it's hard to tell if it really works," he said.

When we made the same mention to Upson in December, he pointed to a new version of the plug-in known as Portable Native Client, which will allow Native Client apps to operate independent of the processor. Portable Native Client – aka PNaCl, pronounced "pinnacle" – compiles C, C++, and other languages into the Low Level Virtual Machine (LLVM) bitcode format, and this allows for client-side translation into the client's native instruction set.

"When it comes to running programs over the web in Native Client, we're very sensitive to maintaining the qualities of the web that have made it so successful," Upson said. "One of those things is that you can write applications that can run on any computer. One of the reasons we haven't widely deployed Native Client so far is we're working on something called Portable Native Client, so you're not tied to any one particular instruction set, so people can build whole new CPUs, whole new chip architectures, and [applications] won't get tied to those."

But Wium Lie questions whether Portable Native Client will achieve the same speeds as the non-Portable version. When applications are ported to standard Native Client, David Springer said today, they already take a 5 per cent performance hit, and presumably they'll slow even more on Portable Native Client.

Eric Kay told us it's too early to tell whether Portable Native Client will introduce a second performance hit, but he believes that if it does, this will mostly affect startup time.

In any event, Google is moving ahead with the project. Springer said that the company is also working on JIT support, and it has already built a Mono port that runs C#. ®

Sponsored: 5 critical considerations for enterprise cloud backup