Grails——赋能敏捷开发的利器

几年前,一个开餐厅的亲戚找我做一个网上订餐的网站(当时外卖平台还没有兴起)。一开始我是拒绝的,因为我的本职工作就是做软件开发的,业余时间真没兴趣再做。而且从头开始做一个网页应用,工程浩大,我也没有这个时间。 一个偶然的机会,我接触到了Grails,通过它几个小时就能构建一个专业的涵盖前、后端的Web应用,于是我尝试着开发那个订餐网站,结果,我利用几个周末仅用了半个人/月的功夫就做好了一个能上线接单并具备后台管理(含基本财务)的网站。刷新了我对软件开发的认知,原来开发一个复杂的含前、后端的Web应用也可以如此地快。 Grails是一个基于JVM的全栈快速Web应用开发框架,类似的框架有著名的Rails,但是它需要用Ruby语言,对于广大的Java开发者,要学习一门新语言显然不现实。于是有人基于Groovy做了Grails,可以理解为Grails = Rails on Groovy。Groovy是JVM三大衍生语言之一,相对于Closure和Scala,它可以视为是Java的简化版和脚本化,学习周期最短,上手只消半天,而且相对于有点老气的Java,动态语言Groovy编程要快速和灵活得多。所以Grails可以说是面向Java开发者的快速开发框架。

通常情况下,开发新的应用程序,搭建开发和测试环境都要花不少时间,这也是让人望而却步的重要原因。万事开头难,好的开始已经是成功的一半。使用Grails,你可以从第一分钟就开始编写业务逻辑,无需考虑环境问题,避免重复造轮子,帮助你更快地开始。它的底层基于很多强大的Java流行框架,如Spring、Spring MVC、Hibernate、Gradle,以及主流的网页技术如HTML5、Taglib等。但你完全不用懂这些东西,Grails已经帮你封装好,你只需要通过它的框架命令就可以轻松搭建你需要的应用。虽然我是做Web应用出身的,但当年的我已经“退出江湖”多年,对于很多的新的技术和框架已经脱节,而通过Grails,我可以在不需要懂这些技术和框架的情况下就运用到它们。而且可以实现响应式网页设计,一套应用分别在电脑、平板和手机完美呈现。

通过Grails的开发过程是,首先抽象你的需求需要哪些Domain Object以及它们会有哪些属性,然后Grails便会帮你围绕Domain Object创建相应的数据库表结构和CRUD脚手架,包含Controller和Web页面。复杂逻辑可以在Service层编写(支持Transactional),然后通过注入在Controller上调用。也就是说,你可以很轻易地获得一间定制化的精装修房子,然后根据自己的需要进行进一步细化。 通过Grails,你可以非常敏捷地进行开发:

  1. 更快地开始,无需费心环境搭建,自带测试环境(嵌入h2内存数据库和Tomcat,这点后来的Spring Boot应该是学它的);
  2. 只消几分钟便可得到Domain Object的CRUD脚手架的精美页面,早期开发过程Domain Object可以随时修改,表结构和脚手架会自动更新,可以边设计边编程边测试,可变性非常高,不需要一开始一次性做对(敏捷);
  3. Groovy强大的动态性和闭包,大大加快了编程速度;
  4. 框架设计上采用“约定胜于配置”的原则,大大减少非业务配置和简化代码关系;
  5. 配置采用DSL格式,比XML更简洁;
  6. 自带测试框架支持测试驱动开发和测试自动化;
  7. 可分环境配置启动数据,使测试、上线更轻松;
  8. 支持分环境参数配置,轻松生成war包部署到不同环境,支持主流Java应用服务器和数据库;
  9. 强大的社区和丰富的插件,有些比较复杂的功能,比如用户验证和授权,通过它的Security框架,只消几行代码便可实现。

也正因为通过Grails开发起步快,它特别适合需要快速试错的初创企业,据说Linked-in最初的版本就是用Grails开发的。当然,任何事情都有两面,要发挥Grails的优势,你最好遵循Grails的方式来进行开发,但是随着业务越来越复杂,它也会不可避免地出现敏捷性和性能下降的情况,甚至到某个发展阶段要进行重构或重写,这是所有应用的宿命,但如果当初不能更快地开始,可能很多想法就不会变成现实。先完成,再完美。 类似的框架还有基于Scala的Play,但是你要掌握Scala就没有Groovy那么容易了。近年流行的Spring Boot和Grails的比较是,Spring Boot只包含Controller和API,没有UI,适合做微服务应用,Grails适合包含前端到后端的全栈单体应用。我相信Spring Boot吸收了不少Grails的思想,实现了开箱即用,而现在新版Grails反过来把Spring Boot作为底层框架之一进行了重构。Spring曾经打造过类似Grails的框架Spring Roo,但是流产了。 接触敏捷,改变了我对软件开发的认知,接触Grails,再一次刷新了我的认知。Grails基于敏捷的思想从技术上实现了快速开发,反过来赋能了敏捷开发。

原文发布于微信公众号 - V社 北京社(SoftwareTesters)

原文发表时间:2019-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券