BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Jim Laskey提议将Nashorn作为OpenJDK的JavaScript引擎

| 作者 Charles Humble 关注 905 他的粉丝 ,译者 张龙 关注 14 他的粉丝 发布于 2013年1月10日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

近日,Oracle的多语言领导Jim Laskey提议将一个新的基于JVM的JavaScript实现Nashorn作为OpenJDK项目。Nashorn是Rhino的后继,而Rhino则是目前的JVM JavaScript实现,它起始于1997年的Netscape,并且经过一些细微的修改后随2006年12月的Java SE 6一同发布。Nashorn则计划随Java 8一同发布并作为其一部分而存在。

Laskey在其OpenJDK的项目提案中说到“Nashorn的目标是在原生JVM上提供一个轻量级、高性能的JavaScript”:

该项目的范围包括但不限于一个解析器API(扫描JavaScript源代码)、一个编译器(将解析器中的抽象语法树AST转换为JVM字节码)及一个运行时(支持上述生成的字节码的执行)。该环境中JavaScript的执行将与ECMA-262 5.1一致,并且会随着标准的不断演进而适应于新的指南。

虽然使用了与Rhino相关的名字,但Nashorn(德语的rhinoceros)却是个全新的代码基,充分利用了Java 7的InvokeDynamic字节码指令。其实现要比Rhino小且快,这使得它更加适合于运行在嵌入式/移动设备上;比如说,它既能运行在Beagle Board上,也能运行在Raspberry Pi上。

Laskey在去年9月的JavaOne上说到,团队正在研究其他JavaScript实现的性能,因此其性能应该能与现代浏览器一较高下。此外,Twitter的Sam Pullara还介绍了他是如何使用Nashorn来渲染Mustache.js模板的。

一切都正常,我根本没有遇到过Nashorn的正确性问题。在性能方面,对于大多数颇具挑战的测试,Nashorn要比Rhino快20多倍。

此外,NetBeans团队已经在Nashorn基础之上完全重写了其JavaScript实现。对于有大量JavaScript文件需要扫描的项目来说,变化的结果就是IDE启动时间的大幅降低。

除了与Rhino相比性能上的提升外,Nashorn相对于其他JavaScript实现来说的一个优势在于它可以访问众多的Java库,包括客户端的JavaFX及服务端的JSP。为了支持这种交互,Nashorn使用了Dynalink——基于Apache许可的开源元对象协议,构建在InvokeDynamic之上,由Attila Szegedi开发,他从Twitter加入了Oracle。Dynalink提供了一套约定以在程序执行环境中指定更高层次的对象操作,对于普通的Java对象它提供了一个链接器。

现在Nashorn提案已经有了一个专门的博客。当Nashorn能够100%兼容于ECMA-262时,OpenJDK项目的工作将会专注在性能以及通用性上。潜在的OpenJDK合作者包括Twitter、IBM与Red Hat。

查看英文原文:Nashorn Proposed as Replacement JavaScript Engine for OpenJDK

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT