写点什么

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:181638
用户头像

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

关注

评论

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

【CSS·显示类型】 block、inline以及inline-block

翼同学

CSS 前端 9月月更

以数字技术赋能产业金融生态能力建设,破解银行的场景焦虑

易观分析

金融 银行 数字科技

2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。请你返回 s 里所有 子字符串的 最大波

福大大架构师每日一题

算法 rust语言 福大大

[Go WebSocket] 你的第一个Go WebSocket服务: echo server

HullQin

Go golang 后端 websocket 9月月更

jsp入门解析

楠羽

笔记 jsp 9月月更

云原生(三十三) | Kubernetes篇之平台存储系统部署

Lansonli

云原生 9月月更

华为云快成长GaussDB(for Redis)

IT资讯搬运工

Linkerd 流量拆分方案

CTO技术共享

Go 言 Go 语,一文看懂 Go 语言文件操作

梦想橡皮擦

Python Go 9月月更

LeetCode两数之和的两种JavaScript解题方法比较|前端学算法

大师兄

JavaScript 算法 9月月更

还晓得吗,Redis 的 zset 怎么实现的?

知识浅谈

9月月更

Predicate

急需上岸的小谢

9月月更

【CSS】:正常布局流(normal flow)、有趣的浮动(float)

翼同学

CSS 前端 9月月更

Web3的流支付代表Zebec,熊市布局的价值逻辑

股市老人

Python 教程之数据分析(4)—— 使用 Python 进行数据分析和可视化 | 第 1 套

海拥(haiyong.site)

Python pandas 9月月更

C++学习------cassert头文件的作用与源码学习

桑榆

c++ 9月月更

跟着卷卷龙一起学Camera--黑电平Blacklevel

卷卷龙

ISP camera 9月月更

亿级别搜索系统架构与总结

goodrain

Java elasticsearch

Web3大行其道,为何说Zebec值得投资人期待?

BlockChain先知

如何增强 ABAP 系统,允许开发人员给 ABAP 对象设置标签,方便快速检索

汪子熙

SAP abap Netweaver 标签体系 9月月更

【CSS·清除浮动】Clearing floats:clear、clearfix、overflow、flow-root

翼同学

CSS 前端 9月月更

NodeJs小试牛刀--聊天室搭建

zxhtom

9月月更

Containerlab + Kind 部署 Cilium BGP

CTO技术共享

室友只用了一把王者的时间就入门了「C语言」

Albert Edison

c++ C语言 函数 循环 9月月更

JPEX如期推出VISA借记卡,预计第四季度发放实体卡

股市老人

HAVE FUN | SOFA 飞船——Layotto 星球登陆计划

SOFAStack

#开源

LeetCode最长快乐字符串使用JavaScript解题

大师兄

JavaScript 面试 算法 前端 9月月更

日拱算法:典例-快慢指针解“环形链表”

掘金安东尼

前端 9月月更

leetcode 206. Reverse Linked List 反转链表(简单)

okokabcd

LeetCode 数据结构与算法

【云原生 | Docker】腾讯云部署Django项目 (服务器选型、git配置、docker三分钟部署)

计算机魔术师

8月月更

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