
3 月 22 日,南京,聊聊生成式 AI 应用构建

Liquor 是一个开源的 Java “动态编译即服务” 的实现框架(零依赖),基于 JDK 编译器构建,可以在运行时编译 Java 字符串代码片段、类、方法等。
功能包 | 大小 | 描述 |
---|---|---|
org.noear:liquor | 24kb | 提供 java 动态编译器(支持 jar in jar) |
org.noear:liquor-eval | 18kb | 提供动 java 表达式引擎,java 脚本引擎 |
兼容 java 所有版本的完整语法(支持 java8 到 java24),由运行时版本决定。
本次更新
- 优化 liquor 编译错误提示,显示完整的类路径、行号及错误代码
- 优化 liquor-eval 动态编译类设计,新的执行性能与固定编译类同等性能
- 优化 liquor-evel 改为 LRUCache 缓存
- 添加 liquor DynamicCompiler:compile 方法
- 添加 liquor DynamicClassLoader:getClassBytes 方法
基本特性演示
Java 表达式
Map<String, Object> context = new LinkedHashMap<>(); context.put("a", 1); context.put("b", 2); //表达式 System.out.println(Exprs.eval("a + b", context)); //=> 3
Java 脚本(完整的 java 语句、导入、参数、返回申明)
CodeSpec codeSpec = new CodeSpec("return a + b;") .imports(System.class) .parameters( new ParamSpec("a", Integer.class), new ParamSpec("b", Integer.class) ) .returnType(Integer.class); System.out.println(Scripts.eval(codeSpec, 1, 2)); //=>3
Java 动态编译(完整的 java 类代码),调试视频:https://www.bilibili.com/video/BV198QyYQEmw/
String code = """ public class Execable$3 { public static int sum(int a, int b) { return a + b; } } """; DynamicCompiler compiler = new DynamicCompiler(); compiler.addSource("Execable$3", code); compiler.build(); Class<?> clazz = compiler.getClassLoader().loadClass("Execable$1"); int sum = (int) clazz.getDeclaredMethod("sum", int.class, int.class) .invoke(null, 1, 2); System.out.println(sum);//=>3
代码仓库
- gitee:https://gitee.com/noear/liquor
- github:https://github.com/noear/liquor
还没有评论,来说两句吧...