Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课

2016-07-19云小编懂企业的品高云


小编的话

“品高云公开课”系列文章意在分享技术牛人的知识干货,和大家一起交流学习云知识,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞!本期品高云公开课由彭鸿杰带来“Java全栈式Web应用开发框架——LEAP的核心设计思想”的分享。

分享嘉宾

Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课_第1张图片

彭鸿杰

目前就任品高云云应用平台部软件工程师, 13年入职品高,专注Java应用开发框架研发和品高云SSO产品研发,目前主要负责Java开源应用开发框架LEAP的核心代码开发和品高云SSOV3产品研发。

分享正文

随着互联网浪潮席卷我们生活的方方面面,企业应用的业务中也越来越倾向互联网思维,企业应用和互联网的融合是未来的大势所趋,未来的企业应用肯定是越来越倾向于以开放接口的形式提供服务,各个业务系统之间的联系也会越来越紧密。

品高云在14年底的时候,就已经开始思考,未来该以什么样的技术来支撑企业应用才能顺应大势。Java的开源技术资源非常丰富,但是却始终找不到一套能完美融合企业应用和互联网应用的开发框架,最后我们决定自主研发一套,这个就是我今天准备跟大家分享的应用开发框架LEAP。

LEAP,全称为Light Enterprise Application Platform,意为轻量级企业应用开发平台,是品高云自主研发的基于Java的全栈式Web应用开发框架,能完美融合企业应用和互联网应用。所谓全栈,指的就是Web应用的前后端。LEAP拥有自己的模板引擎,我们称为HTPL,IOC和Bean容器,ORM模块,以及安全链。整体的架构如下:

Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课_第2张图片

这套架构看起来非常像现在Java开源界占据霸主地位的SSH整合框架。而实际上,他们的功能也非常相似,但是SSH框架相比LEAP来说笨重太多了,光整合这几个框架就要耗费不少时间,而且各个框架后期的配置优化都是一个难题。

但是LEAP不同,LEAP一个框架包含了三个框架的功能,同时搭建LEAP本身非常轻量,使用maven创建的java工程,仅仅需要一个依赖和少量的配置。

我们来看下LEAP的几个核心特点:

轻量

我们先来看看,一个基于LEAP的maven工程,它的依赖配置是怎么样的:

Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课_第3张图片

这里可以看到,只需要一个依赖,就可以把LEAP的所有jar包都引入工程中了。

然后是配置,搭建一个完整的LEAP开发工程,全部的配置如下图:

Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课_第4张图片

这里只需要两个配置文件,配置内容也是及其精简。

易用

LEAP最核心的设计理念就是简单易用,因此设计的时候,许多规则都是在于最大限度的降低开发人员的学习成本,同时让开发人员可以用最简洁优雅的代码完成复杂的业务操作。

这里我以HTPL模板引擎和ORM为例,看下LEAP的使用。

HTPL模板引擎是一个基于HTML注释的模板引擎,可以让HTML代码和模板语言完全分离,互不影响,并且HTPL的模板语言与Java语言的语法非常相似,初学者完全可以举一反三轻松学习HTPL的模板语言,比如下面的是非判断:

这里的if else和Java中的if else很相似,if的条件表达式的语法就是Java的语法,前面的#号表示这段注释是HTPL的模板语言。

这里我们可以很容易想到循环的语法:

HTPL还有更多强大的功能和指令,这里先不深入去说。

我们再看看LEAP的ORM模块。

LEAP的ORM框架使用非常简单,只需要配置一个数据源即可,这个就是在前面提到的少量必须的配置之一:

这个配置完成之后,ORM就可以开始对数据库进行操作了。

LEAP对数据库表映射的类称为Model,所有的Model类都有静态方法可以直接与数据库交互,Model对象本身也有操作数据库的接口,声明一个Model类的方式就是声明一个继承自leap.orm.model.Model类即可,举例如下:

假设User类是一个Model类:

Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课_第5张图片

这个类我们通过注解告诉LEAP映射的是哪个数据库的表,这个类就是一个完整的model类了,不需要其他的配置和声明。

接下来我们看一下Model类如何操作数据库:

创建一行记录:

删除一行记录:

按照指定条件查询数据库记录:

我们可以看到,单表的增删改查基本都是一行代码可以完成,使用LEAP的ORM框架可以使原本复杂麻烦的数据库查询变得非常简单,而且相关的映射配置,也不用写任何SQL语句。

当然,LEAP的ORM还提供了更加强大的动态sql语法以及完全兼容标准SQL语法但是功能更加强大的leapQL查询语法。

这里不再对LEAP的细节深入讨论,这些相关的特性我们可以在LEAP的官网(http://leapframework.org)上看到。

实际上,LEAP除了完善的全栈开发功能以外,还提供了非常多的面向开发人员的功能特性,比如:

1. 静态资源自动版本标识

2. 用户身份认证

3. H5跨域资源共享

4. XSS攻击自动防御

5. Restful服务支持

等等。

这些特性,决定了LEAP框架无论在企业应用开发上,还是互联网应用开发上,都有先天的优势。

LEAP在2015年开始已经正式在品高云企业网盘里作为核心的开发技术在使用了,同时,品高云的其他项目组也纷纷开始使用LEAP作为服务端的开发,都取得非常不错的效果。

目前我们也基于LEAP框架正在开发一个更加杀手级的企业产品,品高云API网关,目前已经完成大部分的核心功能,品高云API网关支持OpenID Connect标准协议,可以将企业内的所有应有系统服务化,并且统计所有服务的使用情况,将帮助企业在全局上统筹各个应用系统的使用情况并且合理分配企业内部资源。

LEAP未来也会成为我们推荐的BingoLink应用后端开发框架和品高云API网关的服务应用开发框架。

在2016年初的时候,我们终于决定正式将LEAP开源出来,分享给大家使用,目前代码已经推送到github上,官网地址:http://leapframework.org.

非常欢迎各位Java的开发人员来使用LEAP框架,同时,如果有人希望加入我们的开源团队,成为LEAP核心代码的贡献者,也可以联系我们。

欢迎大家一起来交流!

想提出问题的同学们,可以在右下方“写留言”,分享嘉宾会热情并且耐心地进行解答噢!

你想和更多志同道合的技术大咖一起交流吗?你想收听每周的“品高云微信群公开课”的直播吗?

长按识别以下二维码关注“品高云计算”微信公众号,回复“公开课”,品高云公开课的最新咨询、往期精彩回顾都在这里!

你可能感兴趣的:(Java全栈式Web应用开发框架——LEAP的核心设计思想 | 品高云公开课)