2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

Hexo个人博客快速部署到Gitee&Coding详细教程

老表

Hexo gitee CODING 博客配置 11月日更

操作系统——计算机硬件简介

思想者杰克

CRM WebClient UI的浏览器打印实现

汪子熙

JavaScript CRM SAP UI5 JavaScript图表库 11月日更

面试必备!阿里内部Java面试八股文出炉,教科书式完美回答

Sakura

Java 程序员 架构 面试

阿里大牛教你如何用Dubbox+SpringBoot+Docker架构,实现双11项目

编程 程序员 springboot

GitHub远程免密连接详解,还顺手解决了RPC失败HTTP413

老表

GitHub RPC HTTP 11月日更

SAP CRM和C4C的内容管理(Content Management)

汪子熙

内容 CRM C4C 11月日更

Eureka 源码之客户端注册

悟空聊架构

Eureka 源码剖析 注册中心 悟空聊架构

模块七作业

Geek_fc100d

「架构实战营」

【高并发】开篇:线程与多线程

冰河

Java 并发编程 多线程 高并发 异步编程

常用的Nmap脚本及使用实例

喀拉峻

网络安全 信息安全 渗透测试 脚本 nmap

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Java spring 程序员 JVM hashmap

杂谈—程序人生第一份工作

思想者杰克

程序人生 新手指南 程序

赋能优秀传统文化,区块链助力讲好中国故事

CECBC

科大讯飞联袂伯俊科技进军3C零售,构建发展新格局

科技热闻

端开发技术——5个高效的Flutter开发工具

思想者杰克

2021年10月云主机性能评测报告

博睿数据

Bash 脚本简介

码语者

bash Shell

区块链的抽象与演进

CECBC

布局人工智能,银行有的不只是智能客服

CECBC

电商秒杀系统

伏波

架构

新消费:如何度过从0到1的破局期?

石云升

学习笔记 11月日更 新消费

央行数字货币即将破茧,一场大变局,震撼全球!

CECBC

架构实战营-总结

哈希

科技热点周刊|ClickHouse 融资 2.5 亿美元、个人信息保护法正式实施、Facebook 改名 Meta

青云技术社区

云计算 facebook 云原生

北鲲云超算平台如何成为就生命科学云计算领域先行者?

北鲲云

十年数据库专家,呕心力作MySQL技术精粹,薪资直涨3K其实很轻松

数据库 程序员 MySQL 数据库

RadonDB ClickHouse on K8s 2.1.0 发布!

RadonDB

数据库 Kubernetes Clickhouse RadonDB

前后端、多语言、跨云部署,全链路追踪到底有多难?

阿里巴巴中间件

阿里云 云原生 中间件 全链路追踪

杂谈——程序人生我的大学

思想者杰克

不敢想,做个博客竟如此简单!

程序员鱼皮

博客

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