2017-02-16 4 views
2

Java8 предоставляет JavaScript-движок следующего поколения как nashorn. Мы можем получить этот двигатель с помощью следующего кода:Nashorn vs Javascript vs ECMAScript

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

Но я обнаружил, что Javascript и ECMAScript также допустимые параметры для getEngineByName()

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

Мои запросы являются:

  • В чем отличия двигатели Nashorn, JavaScript и ECMAScript?
  • Есть ли у java другие двигатели?
  • Какой из них лучше использовать?

ответ

3

Javascript и ECMAScript - псевдонимы для JavaScript-движка по умолчанию, в комплекте с JVM. Java 8+ включает в себя Nashorn двигатель, в предыдущих версиях использовался движок Rhino («rhino»). Nashorn намного быстрее, чем Rhino, потому что он компилирует JavaScript в байт-код, вместо того, чтобы работать в режиме интерпретатора.

Самое быстрое решение, которое я знаю для запуска JavaScript в JVM, - J2V8 (https://github.com/eclipsesource/J2V8). Код JavaScript работает в рамках механизма V8, тот же, что используется Node.js и Chrome. В наших тестах это примерно в 2-3 раза быстрее, чем Нашорн.