写点什么

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

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

关注

评论

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

Java运算符实际运用

凌轩

Java 编程语言

我的时间管理之路(附工具集合及使用心得)

YoungZY

App 时间管理

ARTS week 1

丽子

已发表的技术文章-大数据方面

绝影-大数据

孩子,我们在睡前一起来阅读 15 分钟的好书,让彼此都带着好的故事入眠。

叶小鍵

正确阅读 托马斯·奥本 Doug Antin 蒂·泰德罗克

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

谈谈控制感(10):怎么做一个靠谱的人

史方远

职场 心理 成长

docker19.03读取NVIDIA显卡

首富手记

Docker Dockerfile

字符与编码

引花眠

计算机基础 utf-8

重新开始,被自己搞砸的生活

小天同学

个人感想 日常思考

美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养

神经星星

人工智能 程序员 李飞飞 硅谷 AI 伦理

这个名字,你不能再读错了

小天同学

历史 科普

【转载】如何在团队中做好Code Review?

北纬32°

技术工作中的颜值

N维空间的尘埃

Flink 完美搭档:数据存储层上的 Pravega

Apache Flink

大数据 flink 流计算 实时计算

我们都可能陷入经济困境

董一凡

生活

Java开发工具与HelloWorld

编号94530

Java eclipse Hello World ! IDEA 开发工具

实战 Java8-CompletableFuture

子路无倦

Java 多线程 java8 CompletableFuture

要和竞争对手做比较吗?

邓瑞恒Ryan

创业 战略管理

df 和 ls 命令执行夯主

首富手记

生产力

C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

Python名人堂

C# .net 算法 LeetCode

ARTS打卡 第1周

引花眠

ARTS 打卡计划

阿里的OceanBase上天了,但你还不会用Explain看SQL的查询计划吗?

Super~琪琪

MySQL 数据库 后台开发 后端

不要抱怨,也别憋屈

孙苏勇

职场 随笔杂谈

怎么控制老板不断加需求?

kimmking

写给产品经理的信(2):产品设计能力怎样进阶

punkboy

产品 个人成长 产品经理 产品设计 进阶

系统化服务构建-软件工程分层

图南日晟

微服务 软件工程 架构设计

世界那么大,你有偏见吗?

谢锐 | Frozen

创业 技术管理

关于用户体验的一些思考

码上生长

android 产品开发

如何在团队中做好Code Review

Ken

团队协作 代码审查 Code Review 代码质量

自制操作系统

贾献华

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