Nashorn与JavaScript与ECMAScript的区别

3

Java8提供了下一代JavaScript引擎nashorn。我们可以使用以下代码获取此引擎:

ScriptEngineManager engineManager = new ScriptEngineManager(); 
ScriptEngine engine = engineManager.getEngineByName("nashorn");

但我发现在getEngineByName()中,JavaScriptECMAScript也是有效的参数。

ScriptEngine engine = engineManager.getEngineByName("javascript");
ScriptEngine engine = engineManager.getEngineByName("ECMAScript");

我的问题是:

  • Nashorn、JavaScript和ECMAScript引擎之间有什么区别?
  • Java是否提供其他引擎?
  • 哪个引擎更好用?
1个回答

3

JavascriptECMAScript是与JVM捆绑的默认JavaScript引擎的别名。Java 8+包括Nashorn引擎,之前的版本使用的是Rhino引擎("rhino")。 NashornRhino快得多,因为它将JavaScript编译成字节码,而不是在解释器模式下运行。

我所知道的在JVM中运行JavaScript的最快解决方案是J2V8(https://github.com/eclipsesource/J2V8)。JavaScript代码在V8引擎中运行,这与Node.js和Chrome使用的引擎相同。在我们的测试中,它比Nashorn快2-3倍。


嗯,我对那个快速比较不太确定。我刚读了一篇基准测试,它说的比那多得多。 - Anddo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接