我知道 V8 在执行 JavaScript 之前会将其编译为本机机器代码(IA-32、x86-64、ARM 或 MIPS CPU)。而且我读过谷歌本机客户端将 C/C++ 编译为机器代码,所以如果这两种技术返回相同的结果(机器代码),除了使用的语言(JavaScript C/C++)之外,它们之间有什么区别?
2 回答
好吧,给定一个 CPU 架构(比如说,你在 Intel 机器上运行),你可以说任何技术最终都会编译成机器代码,对吧?因此 Python、Perl、Javascript、C++、Fortran 等只是编译成机器码的不同语言(Python 和 Perl 通常是字节码 VM,但它们也作为机器码在底部运行)。
v8 是一个 Javascript 运行时。是的,它在后台使用编译来加速您的代码。其他 JS 运行时也这样做(*monkey of Firefox 等)
NaCl(通过或不通过 PNaCl)允许您编写最终在浏览器中执行的 C/C++ 代码。这与 JS 相比有一些优点和缺点,你选择哪一个取决于你的具体需求。对于大多数应用程序来说,JS 更适合,因为它是一种高级语言,因此编程起来更方便。然而,一些应用程序需要特殊级别的性能,这是 JS 无法实现的(至少目前是这样)。这些应用程序受益于内部有一个 NaCl 模块,该模块通常参与一个更大的架构,其中也包括 JS。
阅读本文了解更多详情。
主要区别在于,每个浏览器都支持 JavaScript,而 NativeClient 仅支持 Chrome (Chromium)。所以,如果你想写一个 Web-Apps,JavaScript 是最好的选择,因为它会在(几乎)每个浏览器中运行,而不仅仅是在 Chrome 中。