BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

用Google的Native Client提高Web应用程序的性能

| 作者 Abel Avram 关注 10 他的粉丝 ,译者 晁晓娟 关注 1 他的粉丝 发布于 2010年4月16日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

为了提高CPU密集型Web应用程序的性能,Google正在开发 Native Client(本地客户端),一个运行本地代码的浏览器技术。不像Netscape的NPAPI或微软的ActiveX 插件技术,Native Client 运行在双沙箱里,从而被禁止访问底层的操作系统。 

提高Web应用程序性能的一个方法是让浏览器运行本地的应用程序。这种方式运行本地代码通常比Javascript要快。但是这样会导致严重的安全问题,比如访问数据或者创建额外的网络连接。这是针对NPAPI和ActiveX的主要诟病之一。Native Client希望能通过在一个特别的沙箱里运行本地应用程序并禁止访问底层操作系统的方式来解决这个问题。本地应用可以使用CPU以及与Native Client交互。

本地应用程序将会运行在双沙箱里:一个外部的沙箱,类似于浏览器使用的其他沙箱;以及一个内部的沙箱,它基于Software-Based Fault Isolation理论,使用x86内存分段来迫使本地代码运行在已分配的内存段范围内。

根据Portable Native Client Executables白皮书,Native Client 主要有以下几个目的:
1. 提供一个不依赖于ISA的格式来编译NaCI模块,来支持广泛流行的目标平台,而不需要重新编译代码。
2. 让NaCI开发者很容易的构建、测试以及部署可移植执行模块。
3. 开始的时候支持x86-32、x86-64 以及ARM 指令集 ,但将来会直接支持其他流行的通用CPU。
4. 保持Native Client的安全和性能
为了让开发者更容易开发,Native Client 模块可以用任何语言实现,然后被编译成LLVM(底层虚拟机) 二进制编码。LLVM 是一个编译基础架构,它提供ISA中立性,所以原来的代码不需要被移植到不同的目标平台。二进制代码被进一步优化并保存到一个文件中。如果一个网页包含类型为Native Client的<object>标签,浏览器就会创建相应的环境并下载相应的LLVM文件。接着二进制代码就被翻译成为本地代码并被解析,以确保它不会执行非法操作。然后才会执行原定的CPU操作。开发者只需要编写一次就可以部署到多个架构上,中间的LLVM层甚至能让模块在写代码时还不存在的更新的架构上运行。
 
Google已经创建了支持以下平台的Native Client:Windows、Max OS X以及Linux x86-32、x86-64和ARM,而且对任何有兴趣的架构都是开放的。该基准表明Native Client 应用程序在x86和ARM上以普通应用程序97%的速度运行。Native Client可以运行在Firefox、Safari、Opera以及 Google Chrome应用程序的例子比如经典游戏Quake,互动分形动画软件Xaos以及Lua——一个脚本引擎。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

很有趣的技术 by Ma Alex

很有趣的技术,不知道会对 web 产生怎样的影响,会不会大规模用于 web game 呢?

Google又要作孽了 by Ma Karl

Google又要作孽了

跟Flex的区别呢? by Xing Botao

跟Flex的区别呢?/不是只支持HTML5嘛?

抢占用户桌面 by 王 勇

是想用浏览器抢占用户的桌面吧

Re: 跟Flex的区别呢? by jiang rosen

我认为区别应该在于Native上面。Flex flash还是基于runtime的机制。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT