写点什么

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

  • 2010-04-15
  • 本文字数:888 字

    阅读完需:约 3 分钟

为了提高 CPU 密集型 Web 应用程序的性能,Google 正在开发

Native Client(本地客户端),一个运行本地代码的浏览器技术。不像 Netscape 的

NPAPI 或微软的

ActiveX 插件技术,Native Client 运行在双沙箱里,从而被禁止访问底层的操作系统。

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

> 1. 提供一个不依赖于 ISA 的格式来编译 NaCI 模块,来支持广泛流行的目标平台,而不需要重新编译代码。
>
> 2. 让 NaCI 开发者很容易的构建、测试以及部署可移植执行模块。
>
> 3. 开始的时候支持 x86-32、x86-64 以及 ARM 指令集 ,但将来会直接支持其他流行的通用 CPU。
>
> 4. 保持 Native Client 的安全和性能

为了让开发者更容易开发,Native Client 模块可以用任何语言实现,然后被编译成

LLVM (底层虚拟机) 二进制编码。LLVM 是一个编译基础架构,它提供 ISA 中立性,所以原来的代码不需要被移植到不同的目标平台。二进制代码被进一步优化并保存到一个文件中。如果一个网页包含类型为 Native Client 的标签,浏览器就会创建相应的环境并下载相应的 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——一个脚本引擎。

2010-04-15 04:503992
用户头像

发布了 42 篇内容, 共 20.1 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战训练营 - 模块四课后作业

Johnny

架构实战营

架构师实战营 模块四总结

代廉洁

架构实战营

架构师实战营 模块四作业(设计千万级学生管理系统的考试试卷存储方案)

代廉洁

架构实战营

实时语音如何过质量关?

cv君

深度学习 算法 音视频 引航计划

带你认识时域、频域与Android系统Visualizer

Changing Lin

音视频 5月日更

项目管理学习到的教训

胡迪伦

项目管理

想要做网页游戏怎么办 ?PixiJs 篇(四)

空城机

JavaScript 大前端 游戏 pixi 5月日更

Impala架构剖析

大数据技术指南

大数据 5月日更

10年后,区块链的世界将会变成什么样子?

CECBC

面试被问 Spring cloud 上下文,可以这样回答

Damon

spring SpringCloud 5月日更

Android 音视频采集那些事

LoveYFan

音视频

大数据中的工作流调度

五分钟学大数据

大数据 5月日更

架構實戰營 - 模塊 4 作業

Frank Yang

架构实战营

利用Nginx流量镜像,优雅的接入waf

运维研习社

nginx WEB安全 waf 5月日更

后悔:要是当初那样就好了

石云升

思维方式 5月日更 后悔 人生选择

架构实战营 - 模块 4- 作业

请弄脏我的身体

架构实战营

没有发生GC也进入了安全点?这段关于安全点的JVM源码有点意思!

CoderW

Java 源码分析 JVM GC

Redis - 列表

旺仔大菜包

redis

架构实战营 - 模块 4- 作业

泄矢的呼啦圈

架构实战营

《Redis入门指南(第 2 版)》读后感

codists

redis

行车数据上链,国产汽车很上道

CECBC

DDD这样落地

码农戏码

DDD

领域驱动设计101 - 实体

luojiahu

领域驱动设计 DDD

架构师实战营 模块四作业(设计千万级学生管理系统的考试试卷存储方案)

代廉洁

架构实战营

学会这12个Java开发框架轻松拿到30K+

北游学Java

Java spring Netty mybatis 框架

线性表,栈,队列,数组草图

鲁米

这5个浏览器工具,让你的上网舒适度提升150%

彭宏豪95

效率 工具 浏览器 脚本 5月日更

【LeetCode】数组中两个数的最大异或值Java题解

Albert

算法 LeetCode 5月日更

高耦合:为何代码一直被绑架?

Jxin

架构训练营模块4作业

Geek_649372

架构训练营

从 Netflix 到 Alibaba,Spring Cloud 更好了吗?

博文视点Broadview

用Google的Native Client提高Web应用程序的性能_Google_Abel Avram_InfoQ精选文章