写点什么

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

2010 年 4 月 15 日

为了提高 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 年 4 月 15 日 04:503005
用户头像

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

关注

评论

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

ARTS打卡Week 11

teoking

6. 二十不惑,ObjectMapper使用也不再迷惑

YourBatman

json Jackson ObjectMapper

前端科普系列(2):Node.js 换个角度看世界

vivo互联网技术

node.js 前端

数字货币交易所开发,虚拟币交易平台搭建app

WX13823153201

交易所开发

大数据技术思想入门(三):分布式文件存储的流程

抖码算法

Java 大数据 hadoop 分布式

Newbe.Claptrap 框架入门,第三步 —— 定义 Claptrap,管理商品库存

newbe36524

Docker 云计算 微服务 .net core ASP.NET Core

rockchip的yocto编译环境搭建

良知犹存

Linux yocto rockchip

utf8字符集下的比较规则

Simon

MySQL 字符集

“深化产教融合·共育数字人才”全国产教融合信息化高峰论坛·江苏站成功举办

InfoQ_967a83c6d0d7

代理模式详解

海星

解读 Reference

浮白

ThreadLocal Reference ReferenceQueue Finalizer WeakHashMap

浅谈 GET 和 POST 区别

叉叉敌

面试题 post GET

一家估值20亿美元的公司,竟然没有办公室?

Atlassian速递

远程办公 Atlassian Jira

要刷LeetCode了,才发现自己连时间复杂度都不懂

海星

算法 LeetCode

详解责任链模式

海星

ARTS打卡(20.08.17-20.08.23)

小王同学

1.Flink任务之间通信开销-6

小知识点

scala 大数据 flink

想问面试官什么问题么?

escray

学习 面试 面试现场

Docker 安装及配置镜像加速

哈喽沃德先生

Docker 容器 微服务 容器技术 容器化

关于Aborted connection告警日志的分析

Simon

MySQL MySQL错误日志

速看!今天我才知道,UUID还分五个版本

麦叔

Java uuid

Python代码调试指南

王坤祥

Python Python基础

架构师训练营第十一周作业

Melo

你期待的薪酬是多少?

escray

学习 面试 面试现场

从Vessel到二代裸金属容器,云原生的新一波技术浪潮涌向何处?

华为云开发者社区

Docker 容器 云原生 k8s Vessel

顺时针遍历矩阵,提高系统高并发350倍,React Native原理浅析 组件设计原则 安全架构 防火墙ModSecurity John 易筋 ARTS 打卡 Week 14

John(易筋)

ARTS 打卡计划 组件设计原则 React Native 高并发优化

MacOS抓包工具Charles

叉叉敌

ios charles 抓包

我与游戏相伴【自我访谈2】

叶阳夏烟

系列 游戏 访谈录 剧情游戏 仙剑奇侠传

想不出来问题的你

escray

学习 面试 面试现场

看智微智能互动录播系统如何建设“三个课堂”

InfoQ_967a83c6d0d7

并发神器CSP的前世今生

soolaugust

go 并发编程 并发

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

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