1. 常见的需求场景
在日常的Java项目中,我们免不了会遇到这样的需求:
- 动态地获取并运行自定义脚本文件,以实现特定的功能;
- 对数据流执行用户自定义的数据有效性、公式计算、数据处理ETL(如数据截取、拼接)等不同业务逻辑;
- 对用户输入的代码或脚本文件进行测试、运行,确保其语法正确、功能正常;
- 处理需要灵活配置且不断变更的动态业务规则;
- 代码的热更新、热修复;
诸如此类的需求若采用硬编码实现,则迭代成本相当高,每次改动都需要进行开发、测试、部署,同时业务规则的频繁变更会导致代码的开发和维护成本大大提高。这时,就需要选择一个合适的Java动态脚本、规则引擎或计算/表达式引擎等来快速满足这些需求,可以大大减少我们的工作量,提高开发效率。
2. Java动态脚本常见的实现方式
动态编译执行Java代码,通过Java脚本引擎执行不同类型的脚本。