Java8 - nashorn引擎

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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值