🔥 动态编译 Java 的神器 Liquor v1.6.2 发布


Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,40KB),它可以在运行时编译 Java 字符串代码片段、类、方法等。

开源项目地址:

  • gitee: https://gitee.com/noear/liquor
  • github: https://github.com/noear/liquor

基础编译特性:

  • 可以单个类编译
  • 可以多个类同时编译
  • 可以增量编译

增值功能:

  • java 求值表达式引擎
  • java 脚本引擎(支持 java8 到 java24 语法)

本次更新

  • 使用 getTypeName 替换 getCanonicalName (优化 arm jdk 兼容性)
  • 优化 LiquorEvaluator:addSource ';' 号补全处理
  • 简化 LiquorEvaluator clazzName 生成,避免冲突可能
  • 添加 JavaFileSource 类

特性展示

(1)动态编译展示(编译即服务!)

// A.java
public class A { private B b = new B(); }

// B.java
public class B {}

// Demo.java
public class Demo {
@Test
public void test() throws Exception {
final DynamicCompiler dynamicCompiler = new DynamicCompiler(); 

dynamicCompiler.addClassPath(new File(".../test/")); //有此设置。动态编译,也可调试
dynamicCompiler.addSource(new JavaFileSource(new File(".../test/A.java")));
dynamicCompiler.build();

final Class<?> clazz = dynamicCompiler.getClassLoader().loadClass("test.A");
System.out.printf("clazz: %s\n", clazz);
}
}

(2)求值表示式展示

System.out.println(Exprs.eval("1+1"));

(3)脚本展示

Scripts.eval("System.out.println(\"hello word\");");

(4)JSR223 规范脚本展示

ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("java");

System.out.println(scriptEngine.eval("return 2*6-(6+5);"));

相關推薦

2024-09-21

语法(比如泛型,lambda 表达式)。因为,它是基于 java 动态编译器及缓存构建的。 零依赖,包大小约为 36 KB。 实例化表达式引擎(全局可复用,线程安全) ExpressionEvaluator evaluator = new ExpressionEvaluator(); 常量表达式计算演示

2023-11-15

件获取需要提前登记(放到特定的配置文件里) 所有的动态编译、类字节码,不能用 说起来,Solon 框架 真的是好啊(按那男人的讲法:小是真的小,快是真的快): 启动快 5 ~ 10 倍; qps 高 2~ 3 倍; 运行时内

2024-09-22

MooTool v1.6.2 已经发布,开发者常备桌面小工具 此版本更新内容包括: 修复macOS15下无法启动的问题 优化随手记中语法高亮语言类型的展示 优化JVM参数 升级部分核心依赖 详情查看:https://gitee.com/zhoubochina/MooTool/releases/v

2024-10-16

持lambda和泛型了。所以我也是没辙。 这次新的Javax采用Liquor框架的方案,支持了java8到java21中所有的用法,多谢solon作者提供Liquor底层的技术支持,才得以让LF解决了一个困扰多时的问题。使得Java脚本得到了一次大的升级! 如

2023-02-19

更新内容 增加ServerMonitor监控指标配置 同步更新腾讯云短信内容规则 文章和问答增加评论开关属性 修正视频记忆播放无效问题 升级composer包版本 优化Repo查询默认排序 优化管理后台细节 优化二维码输出 优化评

2022-09-22

一 TLog 1.5.0版本正式发布! TLog是一款Java日志追踪神器,10分钟即可让你的系统日志变的可追踪。 如果你是第一次知道TLog这款框架,可以移步以下链接进行了解: 官网:https://tlog.yomahub.com/ Gitee仓库主页:https://gitee.com/dr

2023-09-13

加低代码开发模式配置 jeecg.jmreport.firewall.lowCodeMode: prod 发布模式下会关闭所有报表设计相关接口,普通用户只能访问报表不能做任何报表修改,彻底解决被攻击风险 为了便于线上报表临时维护,拥有角色 "admin"、"lowdeveloper" 的

2025-07-30

(以适与 okhttp 的接口变化) 优化 solon-docs-openapi2 body 动态模型的 key 添加 method(避免冲突) 优化 solon-flow Chain:parseByDom 节点解析后的添加顺序 优化 solon-flow Chain 解析统改为 Yaml 处理,并添加 toYaml 方法 优化 solon-flow Chain:t

2025-03-28

响性能) 优化 solon-cloud-gateway 简化基于 solon-cloud-config 动态更新路由配置的处理支持 调整 solon-configuration-processor 依赖包 调整 solon 对环境变量的配置引用取消限制(之前要求全大写) 调整 solon Solon-executor- 改为守

2023-08-31

安全性 #1354 Sofaboot 4.0 支持 #1356 修复 mac aarch 编译 #1303 chore(deps):将 /all 中的 guava 从 27.0-jre 升级到 32.0.0-jre #1335 chore(deps):将 /bom 中的 guava 从 27.0-jre 升级到 32.0.0-jre #1336 将 hessian 升级到 3.5.0 将 bolt&nb

2022-06-29

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra 6.0.718.0 版本现已发布,具体更新内容如下: 对 ClosestPoint(point, function) 的改进 修复了 Derivative(f,0) 的

2022-08-31

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra 6.0.729.0 版本现已发布,具体更新内容如下: CAS:当参数数量错误时更好的语法错误 保存数值表的

2025-07-30

Geogebra 是动态数学软件,它将几何、代数、电子表格、绘图、统计和微积分集成在一个易于使用的软件包中。 GeoGebra 6.0.894.2 版本现已发布,具体更新内容如下: 修复 Arc(semicircle) 修复距离工具的编辑输出 Suite/CAS

2023-12-22

新的 virtio-gpu rutabaga 设备模拟 新增用于 Hyper-V guests 的动态内存协议设备 hv-balloon 新的通用闪存设备模拟 网络块设备 (NBD) 64 位偏移可提高性能 dump-guest-memory 现在支持标准 kdump 格式 ARM:对 cortex-a710 和 neoverse-n2 的 CPU 仿真