java JSR 223 中常用的脚本语言与引擎名称对应关系
·
JavaScript(最常见)
|
引擎 |
引擎名(getEngineByName) |
说明 |
|---|---|---|
|
Nashorn(JDK 8–14) |
|
Oracle 官方 JS 引擎 |
|
Rhino(JDK 6–7) |
|
老引擎 |
|
GraalVM JavaScript |
|
当前最推荐 |
manager.getEngineByName("JavaScript");
Python
|
实现 |
引擎名 |
说明 |
|---|---|---|
|
Jython |
|
Python 2.x(已停更) |
|
GraalPy |
|
GraalVM 新版 |
manager.getEngineByName("python");
Jython 不支持 Python 3,生产慎用。
Groovy
|
实现 |
引擎名 |
|---|---|
|
Groovy |
|
非常适合 JVM 脚本化逻辑。
Ruby
|
实现 |
引擎名 |
|---|---|
|
JRuby |
|
表达式 / 规则类
|
语言 |
引擎名 |
|---|---|
|
Lua(Luaj) |
|
|
Kotlin Script |
|
|
Clojure |
|
|
Scheme |
|
常用引擎识别方式
ScriptEngineManager manager = new ScriptEngineManager();
for (ScriptEngineFactory f : manager.getEngineFactories()) {
System.out.println(
"Language: " + f.getLanguageName() +
", Engine: " + f.getEngineName() +
", Names: " + f.getNames()
);
}
各语言 → 引擎名速查表
|
语言 |
引擎名(推荐) |
|---|---|
|
JavaScript |
|
|
Python |
|
|
Ruby |
|
|
Groovy |
|
|
Lua |
|
|
Kotlin Script |
|
|
Clojure |
|
重要提醒
-
JDK 11+ 默认没有 JavaScript 引擎
-
Nashorn 已移除
-
必须引入第三方(GraalVM)
-
-
不是所有语言都能跑
-
必须有 JSR 223 实现
-
否则
getEngineByName()返回null
-
-
生产环境慎用脚本引擎
-
安全风险
-
性能不可控
-
调试困难
-
流程图

更多推荐

所有评论(0)