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

Posted 敏于思 捷于行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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——赋能敏捷开发的利器

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


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基于敏捷的思想从技术上实现了快速开发,反过来赋能了敏捷开发。




关于作者



  • 敏捷、精益、DevOps专家

  • 精通极限编程、Scrum、看板方法、测试驱动开发、持续集成、行为驱动开发、DevOps工具栈

  • 曾在GDevOps、DevOpsDays Meetup、中国软件技术大会等论坛发表主题演讲

  • 著有《猎豹行动:硝烟中的敏捷转型之旅》一书


点击“阅读原文”可直接购书





以上是关于Grails——赋能敏捷开发的利器的主要内容,如果未能解决你的问题,请参考以下文章

大前端驱动下MapGIS敏捷开发赋能行业

成熟度模型:企业规模化推广敏捷和DevOps利器

敏捷开发|CSM敏捷项目管理认证培训中文班北京上海西安同步开课

「开源」springboot快速开发框架推荐,接私活利器

敏捷赋能-Scrum五个事件

什么叫敏捷开发?