写点什么

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

  • 2013-01-09
  • 本文字数:1042 字

    阅读完需:约 3 分钟

近日,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

2013-01-09 02:181672
用户头像

发布了 88 篇内容, 共 265.0 次阅读, 收获喜欢 8 次。

关注

评论

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

你必须了解的微服务架构设计的10个要点!

Java 程序员 后端

区块链将会深度应用于乡村振兴

CECBC

你是否精通springcloud:使用SpringCloud进行同步通信?

Java 程序员 后端

Redis 6.0 新特性篇:客户端缓存全面揭秘

码哥字节

redis 缓存 NoSQL 数据库 11月日更

传授一套月薪20k程序员的高薪秘籍

Java 程序员 后端

作为Java面试官,我会问Java程序员一些什么问题?

Java 程序员 后端

Github霸榜月余~,原来是阿里大咖的千亿级并发系统设计手册上线了

Java 编程 程序员

电竞入亚,行业爆发,你的游戏是否还缺个「大招」?

融云 RongCloud

游戏 社交 泛娱乐

你能读懂微服务架构深度解析:架构设计背后的哲学吗?

Java 程序员 后端

你以为自己Nginx掌握的很好?这份1330页Nginx笔记,颠覆你的认知!

Java 程序员 后端

你居然还去服务器上捞日志,搭个日志收集系统难道不香么!

Java 程序员 后端

WICC · 广州 | 圆桌对话:社交泛娱乐 & 出海的机遇与挑战

融云 RongCloud

通信云 社交 泛娱乐 出海

使用Spring Cloud Config进行分布式配置:Vault 后端

Java 程序员 后端

毕业之后,开源给了我第一份工作

Zilliz

数据库 vim 开源 成长

作为一名程序员,你觉得最重要的能力是什么?

Java 程序员 后端

自定义View:如何实现一个双击放大缩小的图片控件

Changing Lin

11月日更

你看得起劲的斗鱼直播,已经在 GitHub 开源了自家项目!

Java 程序员 后端

使用Redis和Java进行数据库缓存 - DZone数据库

Java 程序员 后端

你是否已经精通了SpringBoot的执行器功能了呢?不精通就来学

Java 程序员 后端

认知未来货币需要新的思想资源

CECBC

你还在使用 try-catch-finally 关闭资源?

Java 程序员 后端

使用Spring Data JPA的Specification构建数据库查询

Java 程序员 后端

你知道面试必问的AOP吗?通过Spring又如何实现呢?

Java 程序员 后端

嘉宾就位 | Unity、Beeto、荔枝、阿里云、StarMaker、LiveMe、积目…花城论剑

融云 RongCloud

通信云 社交 元宇宙 泛娱乐 出海

外包学生管理系统 - 详细架构设计

奔奔

你懂的!EL表达式与JSTL标签库

Java 程序员 后端

你有效地管理JVM的垃圾了吗?是时候把垃圾拿出来了!

Java 程序员 后端

融云与 HIFIVE 达成战略合作,共创「沉浸式」社交解决方案

融云 RongCloud

通信云 语聊房 语音社交

你能读懂微服务架构深度解析:架构设计背后的哲学吗?(1)

Java 程序员 后端

难以置信!数字货币袭来!这类人都要富起来了 !

CECBC

你还搞不定生涩难懂的Spring-Aop?梳理完毕以后原来如此简单

Java 程序员 后端

Jim Laskey提议将Nashorn作为OpenJDK的JavaScript引擎_Java_Charles Humble_InfoQ精选文章