tinyscript注重提升集合类处理操作的脚本语言
许多的人使用Java来作为主要的编程语言,许多的时候感觉代码太过繁复,当然有Scala、Kotlin、Python等等语言号称可以解决此问题,但是毕竟生态圈的切换不是个小问题。同时语法结构和Java相去甚远也导致切换的成本毕竟高。
为此本人做了一下尝试,准备走一个中间路线,主题还是用Java语言,但是在需要的时候用TinyScript来解决一下问题,然后再回到Java主体执行,所以你完全可以把它当成一种EL语言来使用,当然解决复杂问题也比常规的EL语言更方便,毕竟TinyScript在集合运算能力方面有重点扩展的地方。
未来的方向,会重点放在算法方面,目前已经内嵌了动态规划的背包问题通用方法,后面会逐步扩充其他算法,让程序员们不再纠结于算法实现,而是集中注意力在问题上。
语言特性列表
支持有序数据结构:数组和序列
支持无序数据结构:set和map
支持专有数据结构:树和序表
序表支持关联、匹配、过滤、分组、排序、聚会等多种业务运算
与java无缝集成,适用于jdk1.6及以上版本
支持new java对象,并可以使用Java所有类及对象
可以采用obj.field方式访问和操作对象属性,简化obj.getField()和obj.setField(value);
支持数据结构间相互转换
支持调用java非静态方法和静态方法
支持bean对象,可以操作bean对象的属性和方法
可以和Spring集成,方便加载bean配置信息
支持访问数据库,可以将表数据转换成序表结构
支持访问Excel,可以将Sheet数据转换成序表结构
支持访问文本,可以将行数据转换成序表结构
支持不同数据源的序表操作,比如关联、匹配等
支持object[key]扩展,比如访问list[1],map[key],简化用户操作
支持object.field扩展,允许用户实现不同语法场景
支持object.function(…)扩展,允许用户实现不同语法场景
支持java的基本类型,内置不同精度的数值转换函数
支持if/elseif/else、switch指令
支持for、while循环指令
支持基本表达式操作,符合java语法规范
允许用户设置下标是否从0开始,方便用户访问元素
支持[a .. b]方式生成指定范围的序列
允许用户定制常量,可以在脚本引擎构造后直接使用,无需声明,如PI、E等。
内置聚合函数和三角函数等系统函数,允许用户自行编写函数类进行扩展。
允许用户编写脚本类,简化业务逻辑。
允许用户编写脚本文件,同时支持java方式和IDE插件调用,实现即时开发测试。
支持动态更新脚本文件,无需重新编译部署
允许用户通过快速运行器执行脚本,也允许用户通过带Spring的运行器执行需要Spring环境的脚本
定义了基本操作符,但是允许用户配置不同的对象实现重载。
提供集合的差并交异或运算
允许对集合子元素进行批量操作符运算,返回新的集合,如list*2
允许对集合子元素进行批量方法运算,返回新的集合,如list.getName()
允许对集合子元素进行批量属性运算,返回新的集合,如list.age
支持lambda表达式,部分函数允许使用lambda表达式简化逻辑
增强lambda特性,允许lambda变量修改外部同名变量。
支持排列的lambda遍历操作
支持组合的lambda遍历操作
支持全排列的lambda遍历操作
支持单方法接口的lambda封装,如Runnable、Comparator
支持各种脚本内嵌执行,比如dataSource[[ sql语言 ]] 进行带@占位符的sql动态执行,支持template[[ 模板语言 ]] 进行模板语言执行,也可以继承各种其他脚本
当然上面列的不一定全,后面也会有新的语言特性加入。
脚本运行
脚本语言的扩展名是ts和tinyscript,当然也可以起其他的扩展名。
提供了Eclipse和Idea的执行器插件,安装之后可以右键直接运行脚本文件。
先推出看看反响如何,如果反响比较好,准备开发ide,支持高亮、调试等等。