使用Emscripten和asm.js将原生应用带入Web

需积分: 0 7 下载量 79 浏览量 更新于2024-07-21 收藏 669KB PDF 举报
"OSTC2015-Mozilla张频_Bring Native to the Web_ an introduction to Emscripten and asm.js" 本次演讲的主题是“Bring Native to the Web: an introduction to Emscripten and asm.js”,由谋智网络(Mozilla)的软件经理张频主讲。Emscripten 是一个由 Mozilla 开发并开源的编译器工具,它的主要功能是将 C/C++ 代码转换为 JavaScript 代码,使得这些原本只能在本地环境运行的程序能够在浏览器环境中执行。 Emscripten 的出现解决了C/C++无法直接成为Web标准的问题,避免了依赖如 ActiveX、Flash、pNaCl 和 NPAPI 这些非标准化的技术。通过 Emscripten,开发者可以利用Web的开放性和广泛性,同时享受到 C/C++ 库的强大功能。JavaScript 引擎的持续优化和性能提升也为 Emscripten 转换后的代码提供了接近原生代码的运行速度。 Emscripten 工作流程主要包括使用 LLVM 编译器前端 Clang 将 C/C++ 代码转化为 LLVM 中间表示,然后由 Emscripten 将这个中间表示进一步编译成 JavaScript(其中包含了 asm.js 子集)。asm.js 是一种低级的 JavaScript 子集,只包含基本类型,不支持对象,这使得它可以被 JavaScript 引擎高度优化,从而实现接近原生性能的执行。 演讲还提到了 Emscripten 的实际应用,已经被集成到 Unity3D 和 Unreal Engine 等游戏引擎中,这表明 Emscripten 在游戏开发和其他对性能要求较高的Web应用中具有显著的优势。 关于asm.js,它是JavaScript的一个子集,设计用于提供更严格的语法和限制,以利于JavaScript引擎进行优化。由于其静态类型和严格的结构,asm.js 可以实现比常规 JavaScript 更高效的执行,尤其是在处理数学计算和密集型任务时。 演讲还讨论了Emscripten的局限性,可能包括文件大小、内存管理以及与JavaScript生态系统整合的复杂性等问题。尽管如此,Emscripten 仍然为Web开发者提供了一条将丰富多样的C/C++库引入Web平台的途径,促进了Web平台的开放性、创新性和机会。 Mozilla 作为一个非营利组织,其使命是推动Web的开放、创新和机会。拥有超过1000名员工分布在全球15个国家,其产品和服务覆盖了5亿多用户,体现了Mozilla对于Web生态系统的深远影响和贡献。