InfoQ技术大会年底储值活动来袭,单张门票最高省3240元 了解详情
写点什么

微软开源新一代浏览器的 JavaScript 引擎核心代码

  • 2015-12-14
  • 本文字数:1177 字

    阅读完需:约 4 分钟

近日,微软宣布开源Chakra 的核心组件。Chakra 是微软新一代浏览器Microsoft Edge 的JavaScript 引擎。相关代码将于2016 年1 月上传到微软的GitHub 账号,项目名称为ChakraCore,遵循MIT 许可协议。

Chakra 是微软 2008 年新创建的一个JavaScript 引擎,其基本构建原则是要具备现代Web 应用所需要的性能特性,并能非常容易地应用于各种不断出现的场景。也就是说,Chakra 需要能够快速启动和运行,提供卓越的用户体验,并充分发挥底层硬件的潜能。下面是Chakra 的基本架构:

为了实现上述目标,Chakra 采用一种独特的多层管道架构,包含一个解释器、一个多层架构的后台JIT 编译器和一个可以并发和局部回收的标记- 清除垃圾收集器。

自Chakra 创建以来,JavaScript 已经从一种主要用于Web 浏览器的语言,成长为一种支持商店应用、服务器端应用、云服务、NoSQL 数据库、游戏引擎、前端工具和IoT 的语言。期间,微软一直在不断改进和优化Chakra,使它不仅可以很好地适应这些场景,而且还能在所有这些场景中提供卓越的体验。这意味着,除了吞吐能力外,Chakra 还必须具备本地互操作性、良好的扩展性和在有限资源环境中执行代码时限制资源占用的能力。Chakra 的解释器在可移植性方面发挥了重要作用。

现在,在Microsoft Edge 浏览器之外,Chakra 还应用于通用Windows 应用、 Azure DocumentDB Cortana Outlook.com TypeScript (做过专门优化)。微软还使Node.js 可以使用Windows 10 上的Chakra ,从而使开发人员可以在新IoT 平台 Windows 10 IoT Core 上使用 Node.js。

随着 Windows 10 的发布,Chakra 不仅在Microsoft Edge 中提供了更好的JavaScript 性能,而且在其他浏览器提供商所拥有的基准测试中,性能也有大幅提升,如下图所示:

此外,Chakra 还支持大部分 ECMAScript 2015(即 ES6)特性,并支持部分 ECMAScript 提案特性,如 Async Functions SIMD 。它还支持 asm.js ,其团队在 WebAssembly 及其相关基础设施的发展中发挥了重要作用。

ChakraCore 是一个全功能、自包含的 JavaScript 虚拟机,可以嵌入衍生产品及用于诸如 NoSQL 数据库、生产力软件、游戏引擎这类需要脚本语言的应用程序。如下图所示,与 Chakra 相比,ChakraCore 主要有两点不同:一是未将私有绑定暴露给浏览器和通用 Windows 平台;二是用一组新的现代化诊断 API 取代了基于 COM 的诊断 API。

虽然将在 1 月份发布的 ChakraCore 版本仅限于 Windows,但微软承诺会将其带到其他平台。感兴趣的读者可以继续关注,在 1 月份正式发布的时候,微软会提供更多细节。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-14 18:002818
用户头像

发布了 1008 篇内容, 共 349.9 次阅读, 收获喜欢 330 次。

关注

评论

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

Java异常处理的误区和经验总结,2021最新网易Java面试题目

Java 程序员 后端

java教程——泛型,java反射原理三种

Java 程序员 后端

Java程序员必须了解的JVM性能调优知识,全都在这里了,java框架常见面试题

Java 程序员 后端

java程序员必须掌握的spring boot—你真的了解了吗,java基础入门第二版第三章答案

Java 程序员 后端

Java程序员极力推荐的springboot全家桶干货系列,运维nginx面试题

Java 程序员 后端

java教程——注解,Java程序员校招蚂蚁金服

Java 程序员 后端

Java是未来的第一编程语言吗?(1),java多线程常见面试题

Java 程序员 后端

java架构师常见的基础面试题及答案(一),这个回答让我错失offer

Java 程序员 后端

Java程序员经典面试题集大全 (六),springboot原理图

Java 程序员 后端

王者荣耀商城异地多活架构设计

Rabbit

Java架构进阶笔记:一不小心就死锁了,怎么办,java区块链项目实战百度云

Java 程序员 后端

Java程序员:面试字节跳动被问算法 多亏我扛下来了,2021最新Java高频精选面试题讲解

Java 程序员 后端

Java开源生鲜电商平台-支付模块的设计与架构(源码可下载)

Java 程序员 后端

Java异常面试题(2020最新版),mongodb入门

Java 程序员 后端

JAVA数组,nginx教程从入门到精通

Java 程序员 后端

Java泛型你了解多少,springboot常见面试题

Java 程序员 后端

Java真的要凉了吗?,工业互联网架构师

Java 程序员 后端

Java应用日志如何与Jaeger的trace关联,mybatis多表查询原理

Java 程序员 后端

Java是动态语言吗?JavaCompiler实现动态编译,并通过反射赋值

Java 程序员 后端

Java程序员怎么写简历?你这样介绍项目经验面试官会对你刮目相看

Java 程序员 后端

文本前后空格去除工具

入门小站

工具

Java架构师面试题系列之Mybatis面试专题(36题,含详细答案解析

Java 程序员 后端

[ CloudWeGo 微服务实践 - 03 ] 小项目尝试

baiyutang

golang 微服务 10月月更

Java性能优化的35个细节(珍藏版),文末有福利

Java 程序员 后端

Java程序员跳槽之旅,离开京东,12面面试回顾和一点经验分享

Java 程序员 后端

JAVA线程池源码之深入状态值分析| Java Debug 笔记,java原理面试题

Java 程序员 后端

Java开发必须要会!java微服务技术栈,菜鸟教程linux教程

Java 程序员 后端

Java异常架构与异常关键字,java引用类型和基本类型的区别面试

Java 程序员 后端

Java是未来的第一编程语言吗?,linux内核架构pdf免费下载

Java 程序员 后端

Java架构师面试之Netty面试专题及答案(共10题,含详细解答

Java 程序员 后端

Java程序员经典面试题集大全 (六)(1),javaee教程视频

Java 程序员 后端

微软开源新一代浏览器的JavaScript引擎核心代码_JavaScript_谢丽_InfoQ精选文章