JavaScript(最常见)

引擎

引擎名(getEngineByName)

说明

Nashorn(JDK 8–14)

"JavaScript"/ "nashorn"

Oracle 官方 JS 引擎

Rhino(JDK 6–7)

"JavaScript"

老引擎

GraalVM JavaScript

"graal.js"

当前最推荐

manager.getEngineByName("JavaScript");

Python

实现

引擎名

说明

Jython

"python"

Python 2.x(已停更)

GraalPy

"graalpython"

GraalVM 新版

manager.getEngineByName("python");

Jython 不支持 Python 3,生产慎用。

Groovy

实现

引擎名

Groovy

"groovy"

非常适合 JVM 脚本化逻辑。

Ruby

实现

引擎名

JRuby

"ruby"

表达式 / 规则类

语言

引擎名

Lua(Luaj)

"lua"

Kotlin Script

"kotlin"

Clojure

"clojure"

Scheme

"scheme"

常用引擎识别方式

ScriptEngineManager manager = new ScriptEngineManager();

for (ScriptEngineFactory f : manager.getEngineFactories()) {
    System.out.println(
        "Language: " + f.getLanguageName() +
        ", Engine: " + f.getEngineName() +
        ", Names: " + f.getNames()
    );
}

各语言 → 引擎名速查表

语言

引擎名(推荐)

JavaScript

javascript

Python

python

Ruby

ruby

Groovy

groovy

Lua

lua

Kotlin Script

kotlin

Clojure

clojure

重要提醒

  • JDK 11+ 默认没有 JavaScript 引擎

    • Nashorn 已移除

    • 必须引入第三方(GraalVM)

  • 不是所有语言都能跑

    • 必须有 JSR 223 实现

    • 否则 getEngineByName()返回 null

  • 生产环境慎用脚本引擎

    • 安全风险

    • 性能不可控

    • 调试困难

流程图

更多推荐