===== maven ===== org.mvel mvel2 2.2.6.Final ===== main ===== import org.mvel2.MVEL; import org.mvel2.compiler.CompiledExpression; import org.mvel2.compiler.ExpressionCompiler; import java.util.HashMap; import java.util.Map; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class test { public static void main(String[] args) throws Exception { preCompile(); explainScript(); scriptEngineManager(); } public static void preCompile(){ // 预编译执行,性能高 ExpressionCompiler compiler = new ExpressionCompiler("x + y"); CompiledExpression exp = compiler.compile(); Map params = new HashMap(); params.put("x", 10); params.put("y", 20); Object result = MVEL.executeExpression(exp, params); System.out.println(result); } public static void explainScript(){ // 解释执行,性能低 Map params = new HashMap(); params.put("a", ""); params.put("b", 12); Object result = MVEL.eval("a==null||!b>10", params); System.out.println(result); } public static void scriptEngineManager(){ // 调动js解析器解析,性能较差 String expr = "x+y*10"; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("js"); engine.put("x", 10); engine.put("y", 10); try { System.out.println(engine.eval(expr)); } catch (ScriptException e) { e.printStackTrace(); } } }