Java8 - nashorn引擎

来源:互联网 发布:小学生计算机编程教材 编辑:程序博客网 时间:2024/05/16 11:42

在实际工作的项目中经常会碰到一些规则,这些规则按笔者经验有如下解决方案:

1,通过设计模式处理,如策略模式+模板方法。

2,通过规则引擎,如drools

3,通过JS引擎

从JDK 8开始,Nashorn取代Rhino成为Java的嵌入式JavaScript引擎,带来了2到10倍的性能提升。相比复杂的设计模式和drools引擎,新的Nashorn引擎方案在实际项目中是不错的选择。

import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;public class JsUtils {    private static final ScriptEngineManager ENGINE_MANAGER = new ScriptEngineManager();    private static final ThreadLocal<ScriptEngine> LOCALS = new ThreadLocal<ScriptEngine>() {        @Override        protected ScriptEngine initialValue() {            return ENGINE_MANAGER.getEngineByName("nashorn");        }    };    public static boolean test(final String script, final int val) {        try {            ScriptEngine engine = LOCALS.get();            engine.eval(script);            return (boolean) ((Invocable) engine).invokeFunction("test", val);        } catch (Exception e) {            e.printStackTrace();        }        return false;    }    public static void main(String[] vargs) {        String scrips = "function test(val){return val>=100;}";        System.out.print(JsUtils.test(scrips, 120));    }}
0 0
原创粉丝点击