幾款不錯的java表達式引擎


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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM