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

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

基础编译特性:

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

增值特性:

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

本次更新

  • 添加 Scripts:eval(String, Map) 便利方法
  • 优化 LiquorEvaluator 编译的脚本允许显示抛出异常

特性演示

  • 动态编译器应用
java 复制代码
//可以复用(不要,不断的新建)
DynamicCompiler compiler = new DynamicCompiler();

String className = "HelloWorld";
String classCode = "import java.util.HashMap;\n\n"+
        "public class HelloWorld { " +
        "   public static void helloWorld() { " +
        "       System.out.println(\"Hello, world!\"); " +
        "   } " +
        "}";

//添加源码(可多个)并 构建
compiler.addSource(className, classCode);
compiler.build();

Class<?> clazz = compiler.getClassLoader().loadClass(className);
clazz.getMethod("helloWorld").invoke(null);
  • 表达式应用
java 复制代码
Map<String, Object> ctx = new HashMap<>();
ctx.put("b", 3);
ctx.put("a", 22);

Exprs.eval("b + a", ctx); //=>25
  • 脚本应用
java 复制代码
Scripts.eval("System.out.println(\"hello word\");");
相关推荐
TT哇39 分钟前
【Java EE初阶】计算机是如何⼯作的
java·redis·java-ee
Fireworkitte7 小时前
Apache POI 详解 - Java 操作 Excel/Word/PPT
java·apache·excel
weixin-a153003083167 小时前
【playwright篇】教程(十七)[html元素知识]
java·前端·html
DCTANT8 小时前
【原创】国产化适配-全量迁移MySQL数据到OpenGauss数据库
java·数据库·spring boot·mysql·opengauss
Touper.8 小时前
SpringBoot -- 自动配置原理
java·spring boot·后端
黄雪超8 小时前
JVM——函数式语法糖:如何使用Function、Stream来编写函数式程序?
java·开发语言·jvm
ThetaarSofVenice8 小时前
对象的finalization机制Test
java·开发语言·jvm
望获linux10 小时前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件
JosieBook10 小时前
【Java编程动手学】使用IDEA创建第一个HelloJava程序
java·开发语言·intellij-idea
Thomas_YXQ10 小时前
Unity3D DOTS场景流式加载技术
java·开发语言·unity