mvel
比較老牌了,很強大,但是好久沒更新了
參考地址:
http://mvel.documentnode.com/
https://github.com/mvel/mvel
ScriptEngine 引擎
可以使用java 自帶的ScriptEngine,基於此我們可以使用多種語言的實現,但是8之后就被移除了。。。
graalvm
多語言引擎,可以集成ruby,js,python,groovy,kotlin。。。。,總之很強大
JEXL
表達式語言,標准,靈活
http://commons.apache.org/proper/commons-jexl/
參考使用
import org.apache.commons.jexl.Expression;
import org.apache.commons.jexl.ExpressionFactory;
import org.apache.commons.jexl.JexlContext;
import org.apache.commons.jexl.JexlHelper;
Opera opera = new Opera( );
opera.setName("The Magic Flute");
opera.setComposer("Mozart");
opera.setYear(1791);
String expr =
"${opera.name} was composed by ${opera.composer} in " +
"${opera.year}.";
Expression e = ExpressionFactory.createExpression( expr );
JexlContext jc = JexlHelper.createContext( );
jc.getVars( ).put("opera", opera);
String message = (String) e.evaluate(jc);
System.out.println( message );
spring 表達式語言
參考使用
public class Data {
private String name; // getter and setter omitted
}
Data data = new Data();
data.setName("John Doe");
ExpressionParser p = new SpelExpressionParser();
Expression e = p.parseExpression("name == 'John Doe'");
Boolean r = (Boolean) e.getValue(data); // will return true
e = p.parseExpression("Hello " + name + ", how are you ?");
String text = e.getValue(data, String.class); //
jsr 標准規范
參考地址
https://jcp.org/en/jsr/detail?id=341
beanshell
比較強大,而且一直在更新
參考地址
https://github.com/beanshell/beanshell
ikexpression
一款簡潔夠用,小巧的表達式包,文檔網上有,但是代碼,目前少維護了
一些其他類似的模版引擎
模版引擎,實際上也可以作為表達式引擎來使用,而且比較多,Velocity,FreeMarker,stringtemplate4
參考資料
https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#expressions
https://beanshell.github.io/