写点什么

用 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:503763
用户头像

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

关注

评论

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

观察者模式

soolaugust

设计模式 观察者模式 七日更

数字货币交易所系统开发,区块链交易所搭建

薇電13242772558

区块链 数字货币

5年Java高工经验,我是如何成功拿下滴滴D7Offer的?

Java架构追梦

Java 学习 架构 面试 滴滴

如何从危机中提炼总结,做好2020年的复盘?

CECBC

复盘 经济

浅谈 WebRTC 的 Audio 在进入 Encoder 之前的处理流程

阿里云CloudImagine

阿里云 音视频 WebRTC 音频技术 音频

15天成功拿到阿里offer 我是如何逆袭成功?全靠“Java程序员面试笔试通关宝典”真够可以!

比伯

Java 编程 架构 面试 程序人生

高光时刻!美团推出Spring源码进阶宝典:脑图+视频+文档

996小迁

spring 源码 架构 笔记

为什么要在以太坊上构建去中心化缓存层?到底要怎样做呢?

CECBC

以太坊

XDAG技术详解1

老五

腾讯五面、快手三面已拿offer(Java岗位),分享个人面经

程序员知识圈

Java 程序员 架构 面试 编程语言

得物App亮相QCon全球软件开发大会,分享百倍增长背后的技术力量

得物技术

效率 技术 得物 得物技术 Qcon

小程序市场的「App Store」来了!你准备好吃“螃蟹”了吗?

蚂蚁集团移动开发平台 mPaaS

小程序生态 mPaaS appstore

AOFEX交易所APP系统开发|AOFEX交易所软件开发

系统开发

盘点 2020 |协作,是另外一种常态

冯文辉

领域驱动设计 DDD 协作 远程协作 盘点2020

自定义TBE算子入门,不妨从单算子开发开始

华为云开发者联盟

算法 算子 自定义

jenkins实现接口自动化持续集成(python+pytest+ Allure+git)

行者AI

软件测试中需要使用的工具

测试人生路

软件测试

【得物技术】如何测试概率性事件-二项分布置信区间

得物技术

测试 开发 概率 得物 得物技术

资深码农:拿下软件测试,只需掌握好这两种方法!

华为云开发者联盟

软件 工具 测试

json处理

Isuodut

Locust快速上手指南

行者AI

接口自动化传值处理

行者AI

iOS面试基础知识 (五)

iOSer

ios 面试 底层知识

我的 500 张技术配图是怎么画的?

小林coding

程序人生 画图软件

排查指南 | mPaaS 小程序被卡在了三个蓝点

蚂蚁集团移动开发平台 mPaaS

小程序 问题排查 mPaaS

《迅雷链精品课》第十三课:PBFT算法

迅雷链

区块链

LeetCode题解:42. 接雨水,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

25道mybatis面试题,不要说你不会

田维常

mybatis

双循环背景下的全球供应链机遇与挑战

CECBC

供应链物流

接口自动化测试的实现

行者AI

3面抖音犹如开挂,一周直接拿下offer,全靠这份啃了两个月「Java进阶手册」+[Java面试宝典]

编程 程序员 面试 计算机

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