🔥 理解 Liquor :动态编译 Java 代码的神器
引言
Liquor 是一个开源的轻量级 Java 动态编译器(零依赖,24KB),它可以在运行时编译 Java 字符串代码片段、类、方法等。
编译特性:
- 可以单个类编译
- 可以多个类同时编译
- 可以增量编译
Liquor 的基本使用
需求:输入一个类定义的 java 字符串(内容逻辑为输出 Hello World ),然后使用 Liquor 去动态编译并执行。
首先,需要在项目中添加 Liquor 依赖,以 maven 为例:
<dependency> <groupId>org.noear</groupId> <artifactId>liquor</artifactId> <version>1.1.1</version> </dependency>
接着可以写 Liquor 相关的代码了:
public class DemoApp { public static void main(String[] args) throws Exception{ String className = "HelloWorld"; String classCode = "public class HelloWorld { " + " public static void helloWorld() { " + " System.out.println(\"Hello, world!\"); " + " } " + "}"; DynamicCompiler compiler = new DynamicCompiler(); //添加源码(可多个)并 构建 compiler.addSource(className, classCode).build(); Class<?> clazz = compiler.getClassLoader().loadClass(className); clazz.getMethod("helloWorld").invoke(null); } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java 23 / JDK 23 正式发布
Java 23 现已全面推出。这是一个非 LTS(长期支持)版本,Oracle 仅提供六个月的支持。 此版本包含 12 个 JEP,其中包括将 ZGC 的默认模式切换为分代模式。 455:模式中的原始类型、instanceof 和 switch(Preview) 466:Class-File API(Second Preview) 467:Markdown 文档注释 469:Vector API(Eighth Incubator) 473:Stream Gatherers(Second Preview) 471:弃用 sun.misc.Unsafe 中的内存访问方法并删除 474:ZGC:默认的分代模式 476:模块导入声明(Preview) 477:隐式声明的类和实例主方法(Third Preview) 480:结构化并发(Third Preview) 481:范围值(Third Preview) 482:灵活的构造函数主体(Third Preview) 与往常一样,此版本还包含数百个较小的增强功能和数千个错误修复。 下载地址:https://jdk.java.net/23/ 发行说...
- 下一篇
UJCMS 9.6.2 发布,Java CMS 网站内容管理系统
更新日志 新增邮件短信、手机短信发送时的错误提示 新增关闭站点功能 新增一键置灰功能 新增我的留言功能 新增区块管理列表副标题字段 新增 CSRF 参数接口 访问日志请求每次都获取 CSRF 校验码,防止 CSRF 错误 修复前台手机端首页栏目下拉无效 修复openGauss部分不支持的语法 去除公安备案图标 调整部分演示数据 简介 Java 开源网站内容管理系统 (java cms)、Java 建站系统。使用 SpringBoot、MyBatis、Spring Security、Lucene、FreeMarker、TypeScript、Vue3、ElementPlus 等技术开发。使用Apache-2.0开源协议,可免费用于商业网站。 支持无头 CMS,可使用模板 (Freemarker)+ 标签或 Vue (React)+API 方式制作网站。支持自定义字段及字段可视化设计,自定义字段在前后端均可作为搜索条件。 技术上尽量选择主流、先进、简单的架构,方便用户进行二次开发。设计上强调 “简单”、“灵活”,避免繁杂的设计和实现,降低系统维护成本和二次开发难度。功能使用上也要求 “简单”...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS关闭SELinux安全模块
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Hadoop3单机部署,实现最简伪集群
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker安装Oracle12C,快速搭建Oracle学习环境