网站首页 > 精选教程 正文
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
猜你喜欢
- 2025-05-08 Java程序员要不要学习Lua?(java程序员对学历要求高吗)
- 2025-05-08 在安卓设备上运行Python的方法(安卓系统运行python)
- 2025-05-08 Unity3D手游开发实践《腾讯桌球》客户端开发经验总结
- 2025-05-08 达内java培训专家:大牛程序员眼里万能的java
- 2025-05-08 Janino 不思进取了?Java 动态编译 的新神器 Liquor v1.3.10 发布
- 2025-05-08 Java多语言混合编程的魅力之旅(java多语言支持)
- 2025-05-08 Java 开发工具合集:从入门到高手必备
- 2025-05-08 重拾JAVA:这种编程语言为什么不行了?
- 2025-05-08 动态编译 Java 的神器 Liquor v1.3.9 发布
- 2025-05-08 上手AutoHotKey(简称ahk)并编写一个简单的脚本程序
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)