Native Client 让你使用 C/C++ 开发 Web 应用

fmms 9年前
     <p>Google 的产品经理 Christian Stefansen 同学近日在 Chromium 官方博客中说最新版的 Chrome Beta 已经可以使用 C 以及 C++ 语言来开发 Web 应用,而这一切正是得益于 Google 的本地客户端(<a href="/misc/goto?guid=4958184351008522769" target="_blank">Native Client</a>)。</p>    <p>本地客户端应用是运行在 Web 平台上的,所以开发者不需要为每一个操作系统都做一个版本。同时本地客户端应用使用的是 Pepper 插件 API,这个 API 可以让你用 C 和 C++ 语言开发具有 HTML 5 功能的应用程序。不依赖操作系统就是说一旦你把你的代码移植到本地客户端,那么就可以运行在所有的操作系统上,你也只需要维护一个代码库。反正说来说去 Google 的意思就是让开发者都把代码移植到本地客户端上来。</p>    <p>目前本地客户端支持2D图形、立体声音频、网址抓取、有沙盒保护的本地文件访问(<a href="/misc/goto?guid=4958185767723129716" target="_blank">文件API</a>)以及与 JavaScript 的双向异步消息传递等 Pepper API 中的功能,未来还会加入3D图形硬件加速(OpenGL ES 2.0)、全屏模式、网络(<a href="/misc/goto?guid=4958185768467117154" target="_blank">WebSockets</a> 以及点对点连接)等等功能,反正就是 HTML 5 和 Pepper 中有的新功能,本地客户端都会在第一时间加入。</p>    <p>值得一提的是本地客户端的安全性,为了确保本地客户端能够像 Javascript 一样安全,本地客户端的代码嵌套了两个沙箱以实现与操作系统隔离,分别为<a href="/misc/goto?guid=4958185769199025490" target="_blank">本地客户端沙箱</a>以及 <a href="/misc/goto?guid=4958185769944131765" target="_blank">Chrome 自带的沙箱</a>。和传统的 NPAPI 插件以及 ActiveX 空间不同的是,本地客户端应用不会访问底层的操作系统 API。</p>    <p>开发者如果想要用本地客户端开发应用程序的话,可以直接在<a href="/misc/goto?guid=4958184351008522769" target="_blank">本地客户端官方网站</a>上下载 SDK、寻找教程、样例、API 文档以及 <a href="/misc/goto?guid=4958185771350588761" target="_blank">FAQ</a>,等 Chrome 14 进入 Stable 分支之后,那么你用本地客户端开发的 Web 应用就可以上传到 Chrome Web Store 中让1.6亿的 Chrome 用户使用了。</p>    <p>本地客户端的下一个里程碑是架构独立,而可移植的本地客户端(<a href="/misc/goto?guid=4958185772090475518" target="_blank">Portable Native Client</a>)将使用 <a href="/misc/goto?guid=4958185772818413696" target="_blank">LLVM</a> bitcode 作为基础用于本地客户端内容分发格式来实现这一点,在程序运行之前将其翻译成实际目标指令集。不过在此之前 Chrome Web Store 是本地客户端应用唯一的分发渠道,因为这样才能够确保所有的本地客户端应用能够在可抑制的本地客户端准备好之后无缝升级,并且这种机制还可以避免依赖指令 集架构的应用蔓延,到时候 Google 会专门发博客给开发者解释这一切。</p>    <p>不知道 Chromi 的读者中有没有使用本地客户端开发的作品,不妨秀出来给大家伙儿见识见识!</p>    <p>via <a href="/misc/goto?guid=4958185773560149334" target="_blank">Chromiumblog</a><br /> 本文转载自: Chrome迷 (<a href="/misc/goto?guid=4958185774299999619" rel="nofollow">http://www.chromi.org</a>) <br /> </p>