我已经将Rhino用于图形内部的脚本组件。在该项目中,大约有200个小脚本独立运行。启动应用程序时,脚本应立即全速运行。 Rhino的表现已经足够,但由于Oracle建议迁移到Nashorn,我面临着困境。
下图显示了Rhino和Nashorn之间的负载差异,大约有15,000个脚本调用。 Nashorn的创业缓慢是我最大的问题。
请注意,这是在JDK 1.8.0上。 JDK 1.8u5类似
我希望图片清晰。
这是我如何使用ScriptEngine的概述:
下面我提供了一个运行时配置文件,说明了引擎随时间的繁忙程度;
有谁知道如何克服Nashorn的创业迟缓?
4月15日更新' 15
在Java8u45上使用200个单独的脚本进行相同的测试
性能要好得多!在Java7上以与Rhino类似的速度运行。
答案 0 :(得分:2)
在Java 1.8上,您可以使用此Maven依赖项并请求引擎javax.script
,通过rhino
API使用Rhino:
<dependency>
<groupId>de.christophkraemer</groupId>
<artifactId>rhino-script-engine</artifactId>
<version>1.1.1</version>
</dependency>
主页:https://github.com/cevou/rhino-script-engine
二进制文件:here
如果您想要最新版本的Rhino,可以通过添加以下内容来覆盖它:
<dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>${rhinoVersion}</version>
</dependency>
二进制文件:here
顺便提一下,如果你想通过javax.script
使用Java 1.7上的最新Rhino,你应该请求引擎名rhino17R5
,或者你可以随机获得旧Rhino的一个实例,它是JRE。所需的确切引擎名称取决于rhino-script-engine
的版本。对于1.1.1,它是rhino17R5
。