JavaPlusScript简介

设计 背景

目前,随着软件产业的蓬勃发展,软件项目及产品取得新进步、新成绩的同时,也遇到新的问题及挑战。

从业务角度来说,开发维护需要编写的业务代码日益庞大复杂,程序员需要编写的代码越来越多、越来越长;项目及产品需要集成的第三方语言的情况也日益常见,集成的工作及难度非常大。

从底层存储来说,不同数据库细节差异大,迁移维护不容易;SQL语法标准难以实现传统编程语言的特性;业务逻辑集中数据库,导致后期难以扩展。

从语言角度来说,Java等编程语言虽然功能强大,但是缺少关系运算支持,对过滤、分组、排序和关联等实现难度大;Python等虽然计算优异,但是语法结构和Java差异很大,Java程序员上手不易;一般脚本语言语法虽然简单方便,但是往往限于特定场景,对多元化场景支持不够充分,扩展能力弱。

JavaPlusScript以Java语言为基石,兼有脚本语言的灵活方便,设计初衷就是为Java程序员服务,给他们减负,提高工作效率。

使用场景

JavaPlusScript本身是对Java语言的增强,因此可以使用Java语言的场合,都是可以使用JavaPlusScript语言。当然,JavaPlusScript本身还是有一些推荐场景,在这些业务场景,用户可以快速方便开发业务,下面这张图列举了这些场景:

JavaPlusScript简介

EL表达式:

  • 获取数据,执行表达式计算
  • 引用上下文对象
  • 调用Java方法

数据服务:

  • 支持多种数据源
  • 支持异构数据源混合运算,屏蔽底层差异
  • 简化数据源读写操作

ETL编排:

  • 支持ETL组件化
  • 支持脚本定义组件
  • 支持脚本流程编排,定义ETL流程

JavaPlusScript语言优势在于灵活可扩展,用户可以根据自己的需要进行集成、扩展甚至二次开发,定制适合自身的业务场景,真正做到“看菜吃饭,量体裁衣”。

架构层次

JavaPlusScript采用Maven管理工程,通过定义核心工程、扩展工程以及聚合工程,实现语言解析、语言特性与具体业务实现分离,既保证语言自身的稳定,又保证良好的扩展能力,工程层次图如下:

JavaPlusScript简介

功能特性

JavaPlusScript语言在设计上遵循大部分Java语法规范,但是在简化程序员操作这一大前提下,还是做了很多改进,比如:变量弱类型,不用强制声明类型。

JavaPlusScript作为一门语言,当然支持各种语法、指令、函数,碍于篇幅,下面重点为大家介绍常用的功能特性:

  • 支持集合运算

JavaPlusScript简介

脚本语言支持集合的差、并、交、异或运算;集合运算同时支持操作符和函数调用两种方式;支持集合的聚合运算;支持通过集合对象操作元素API方法,省略循环。

  • 支持脚本类

JavaPlusScript简介

JavaPlusScript支持脚本类,类似Java的类,但是脚本类使用更方便。比如说,脚本类的构造函数,如果参数名和属性名相同,自动赋值;属性免写get/set方法,自动支持;与集合运算、过滤等操作无缝集成。

  • 支持字符串模板

JavaPlusScript简介

在Java语言中,字符串拼接无论采用加号连接,还是采用StringBuffer,都不是优雅的做法,在JavaPlusScript语言中,可以采用更优雅的做法,通过占位符实现字符串和表达式的连接。

  • 支持Lambda

JavaPlusScript简介

Java语言是直到JDK8才开始支持Lambda。JavaPlusScript支持通过Lambda简化业务逻辑,减少冗余代码。Lambda有两种运用方式:一是带名称的Lambda,可以像函数一样使用;二是匿名Lambda,可以作为参数,实现自定义业务功能,如排序、分组等。

  • 排列组合

JavaPlusScript简介

JavaPlusScript目前支持三种排列组合方式:排列、组合、全排列,通过与Lambda结合,用户可以在排列组合遍历过程中,实现自身的业务逻辑,如打印输出、计数等。

  • 注册函数

注册函数是脚本语言非常重要的扩展机制之一,通过注册函数,用户可以实现逻辑封装和业务增强。

脚本语言内置了近百种注册函数,按调用方式的不同可以分为绑定对象类型和无绑定类型两种函数。

脚本类型如果按场景分,可以划分三角函数、数学函数、聚合函数、日期函数、字符串函数、转换函数、数据库函数、序表函数、序列函数等,用户可以根据自己的需要进行选择。

  • 序表操作

JavaPlusScript简介

序表是二维数据结构,非常适合描述表结构数据,如果使用数据库很难离开这个结构。

序表的来源可以是多种,如数据库、Excel、csv文本等,同时支持遍历和下标访问两种方式;JavaPlusScript非常重视序表,提供强大的功能,序表可以进行关联、排序、分组、过滤等各种操作。

  • 支持Bean

JavaPlusScript简介

JavaPlusScript与Spring Bean无缝集成,用户可以直接使用;通过Bean机制,用户可以减少重复配置,一次配置到处使用,如数据库数据源等。

  • 与Java完美结合

JavaPlusScript简介

所有的Java资源都可以被JavaPlusScript使用;同时,JavaPlusScript的结果也可以转化为一般Java对象,非常人性化。

  • 集成第三方语言

JavaPlusScript简介

在JavaPlusScript中,可以方便的集成各种DSL/脚本语言,采用最合适的语言来有针对性的解决具体的问题,以便发挥最大的语言效能。语言扩展可以充分利用框架资源,节约开发时间

  • 强大的扩展能力

JavaPlusScript设计之初就考虑到扩展问题,提供如下扩展点,方便用户扩展:

支持扩展注册函数;支持扩展聚合函数;支持扩展语言包;支持操作符重载;支持集成第三方语言等。虽然扩展点很多,但JavaPlusScript扩展机制都一样:实现指定扩展接口,定义Bean配置文件,脚本引擎就会自动扫描、加载扩展点,这是不是非常方便呢?

  • 优秀的异常提示

JavaPlusScript简介

作为一款脚本语言,良好的异常提示跟语言功能点一样重要,如果用户编写、执行脚本总是遇到一堆错误信息,然而这些信息并不能帮助他解决问题,那么用户体验就非常槽糕了。JavaPlusScript一直重视用户体验,通过异常提示,用户不仅能知道错误原因,错误块的位置,还能知道完整的错误调用信息,如果涉及注册函数还会提示函数内部细节,非常人性化。

脚本示例

示例1:青年歌手参加歌曲大奖赛,有n(n>2)个评委打分,试编程求选手的平均得分(去掉一个最高分和 一个最低分)。

代码如下:

JavaPlusScript简介

示例2:01背包问题,有编号分别为a,b,c,d,e的五件物品,它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你一个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?

代码如下:

JavaPlusScript简介

示例3:关联序表

代码如下:

JavaPlusScript简介

示例4:ETL示例,从excel提取历史的上证指数,并转存到数据库。

代码如下:

JavaPlusScript简介

示例5:优化投资组合,小王有一笔钱m,在t时间内,想做理财投资,有如下几只理财产品可供选择,请给出最佳投资组合方案。

代码如下:

JavaPlusScript简介

总结

综上所述,JavaPlusScript扩充Java语法、优化代码结构、简化程序逻辑,是一款非常优秀的脚本语言。实现与Java相同的业务逻辑,代码量仅需三分之一甚至五分之一,可以大幅提升程序员的工作效率,让程序员们有更多的时间与家人在一起,让公司有更多的利润空间

原文 

http://rdc.hundsun.com/portal/article/935.html

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » JavaPlusScript简介

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址