写点什么

访谈和书摘:《Grails A Quick-Start Guide》

  • 2010-08-18
  • 本文字数:2381 字

    阅读完需:约 8 分钟

Dave Klein 所著的《 Grails A Quick-Start Guide 》一书涵盖了 Grails Web 开发框架的相关内容,该框架遵循“惯例优于配置”的原则,相比传统基于 Java 的 Web 应用开发框架,简化了 Web 开发。

在这本书里,Dave 通过迭代构建一个叫做 TekDays.com 的 Web 应用示例解释了 Grails 的使用。内容包括构建典型 Web 应用中的应用架构组件,如领域类、控制器和 Groovy 服务器页面(GSP)视图。他还讨论了象 Spring Hibernate 这种流行的 Java EE 框架与 Grails 的集成。书中涵盖的其他主题包括 Grails 安全、集成测试、AJAX、自定义标签,以及针对 Grails UI 和 Twitter 网站的插件。

InfoQ 就这本书,主要的写作动机,以及其他主题对 Dave 进行了采访。我们还制作了《Grails A Quick-Start Guide》的书摘(第3 章:Laying the Foundation; 1,098 KB PDF),以供读者下载。

InfoQ:《Grails A Quick-Start Guide》一书背后的主要写作动机是什么?

Dave Klein (DK):写这本书的想法源于我在帮助同事提高 Grails 使用技能过程中所做的努力。尽管他们相当快就可以上手使用了,可我还是认为最新的入门书籍会有所帮助。但是,动机则是我期望更多的开发者和公司能采用 Grails。了解 Grails 的第一步就是去使用它,我想提供一本书可以让人们更轻松和更快地使用 Grails。

InfoQ:Grails 框架在企业应用开发领域的角色是什么,尤其是考虑到伸缩性和性能?

DK:Grails 非常适合已经使用 Java 的任何企业。Grails 可以产生能部署到他们现有应用服务器的标准 JEE WAR。Grails 还能够非常好地跟这些企业已经在用的很多 Java 库集成在一起。而且,还有不少 Grails 插件可以轻松地添加诸如缓存、集群、安全、搜索、Web 服务等这样的特性。

InfoQ:你对 Grails 作为领域驱动开发(DDD)框架这一角色怎么看?

DK:Grails 的动态可扩展脚手架可以让它轻松地应用 DDD 原则,而且没有某些 DDD 框架的限制和复杂度。

InfoQ:Grails 相比其他 Web 框架(如 Lift 和 Rails)怎样?

DK:Grails 借用了很多 Rails 的原则和想法,Lift 也一样。但 Grails 不是一个"Rails 克隆"。基于 Grails 要跟 Java 及现有 Java 框架(如 Spring 和 Hibernate)完全无缝地集成的目标,在设计上有很多不同。最终,凭借相当平滑的学习曲线,Grails 给开发者带来了让 Rails 在 Java 开发者中取得巨大成功的生产效率。

InfoQ:从开发者的测试、调试、重构、应用调优等方面来讲,工具对使用 Grails 框架开发应用的支持如何?

DK:工具对 Groovy 和 Grails 的支持一直在改进。借助由 SpringSource 投入资源支持的 Eclipse 插件和一贯表现优异的 IntelliJ IDEA,Grails 开发者可以利用代码补全、调试、重构等功能。同时,还有一些 Grails 插件可以让开发者轻松地使用诸如 Selenium WebTest 这样强大的测试框架,以及内置的 Grails 测试框架。最近,我们也已经看到了象 Spock 测试框架和 CodeNarc (Groovy 和 Java 的静态分析工具)这类工具的崛起。

InfoQ:你能分享一些关于 Groovy 中元对象协议(MOP)的想法吗?

DK:Groovy MOP 是一个强大的工具。没有它就没有 Grails:Groovy 元编程(metaprogramming)让“惯例优于配置”成为了可能。任何构建基于 Java 的框架都应该仔细研究 Groovy 的 MOP。

除了框架,元编程还能够帮助测试。其实,我平常大多数时候都把元编程应用在写测试上面。在大多数我的测试中,它几乎完全避免了 Mock 对象的需要。

InfoQ:Groovy 在创建领域特定语言(DSL)方面扮演了什么角色?

DK:Groovy 的 methodMissing 和 propertyMissing 可以轻松地创建任何用途的 DSL。Grails 使用这个特性提供了 ORM 映射、装配 Spring Bean,以及其他配置的 DSL。很多 Grails 插件还提供了 DSL 用来与这些插件所包装的库或框架进行交互。使用 Groovy,创建所有这些东西不仅可能而且容易。

InfoQ:对于那些目前正在或准备在他们的应用里使用 Grails 的开发者来讲,有哪些最佳实践和需要注意的地方?

DK:Grails 可以方便地实现设计良好的 Web 应用。但是它也可以轻易地实现设计蹩脚的 Web 应用。因此,我想建议开发者要抑制住仅仅是为了草草拼凑出一个应用的诱惑,尽管 Grails 可以如此轻易地组装出一个应用。

让你的控制器保持干净。把逻辑移到领域类或服务中。让代码远离视图。好好研究自定义 GSP 标签。

InfoQ:是否有些特性是目前 Grails 框架中还没有,但你又特别想要的?

DK:我想看到更多的插件——尤其是跟其他框架集成的插件。插件的数目在不断增长,但是还有很多创建新插件的机会。

InfoQ:总的来讲,你对 Groovy 的未来如何看,尤其是 Grails?

DK:我认为它们两个的前途都是一片光明。只要有 Java 的地方就会有 Groovy,随着人们意识到它可以轻松地跟他们现有的 Java 环境集成到一起,它会不断地吸引使用者。Grails 是目前 JVM 上最好的 Web 框架,它将持续得到改进。尽管我认为没有一个框架可以获得当初 Struts 曾经获得的关注度,但我认为 Grails 将成为领先的 JVM Web 框架。

InfoQ:你最喜欢的 IT 和非 IT 书籍是什么?

DK:这实在是个难以回答的问题,因为好的 IT 书籍太多了。但我大多数时候喜欢翻的书是 Steve McConnell 写的《代码大全(Code Complete)》、Thomas 和Hunt 合著的《程序员修炼之道(Pragmatic Programmer)》,以及Fred Brooks 的《人月神话(The Mythical Man-Month)》。在最近读的书里,我非常喜欢Daniel Steinberg 的Cocoa Programming 的预览版和Griffon in Action 的预览版。

我最喜欢的非IT 书籍是《圣经》,然后是John Bunyan 所著的经典,《天路历程(Pilgrim’s Progress)》。

InfoQ:非常感谢,Dave。

查看英文原文: Interview and Book Excerpt:Dave Klein’s Grails A Quick-Start Guide


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家加入到 InfoQ 中文站用户讨论组中与我们的编辑和其他读者朋友交流。

2010-08-18 00:002402
用户头像

发布了 255 篇内容, 共 59.4 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

springcloud(三)网关zuul

Java 程序员 后端

SpringBoot整合SpringSecurity超详细入门教程

Java 程序员 后端

SpringBoot注解最全详解(整合超详细版本)

Java 程序员 后端

2022,了不起的程序员日历来啦!

图灵教育

程序员 日历

SpringBoot配置全局的异常捕获 - ajax形式

Java 程序员 后端

springcloud(一)注册中心eureka

Java 程序员 后端

SpringBoot自动装配原理分析,手写starter组件

Java 程序员 后端

区块链技术是关键?元宇宙热潮背后的三股驱动力

时空云

区块链 科技信息 元宇宙

SpringCloud—— eureka+feign实现声明式服务治理

Java 程序员 后端

Apache Flink CDC 批流融合技术原理分析

Apache Flink

大数据 flink

微软资深算法工程师为AI初学者量身打造的机器学习入门书上市啦!

图灵教育

机器学习 入门

SpringCloud Gateway入门实战(中篇)

Java 程序员 后端

正则表达式 与 XPath 语法领域细解,初学阶段的你,该怎么学?

梦想橡皮擦

11月日更

springboot整合mybatis

Java 程序员 后端

springboot整合rabbitMq

Java 程序员 后端

SpringBoot集成Shiro,并使用多个Realm

Java 程序员 后端

MySQL Operator 02 | 脚手架选型 & 工程创建

RadonDB

MySQL 数据库 Kubernetes RadonDB

SpringBoot系列:Spring Boot集成定时任务Quartz

Java 程序员 后端

SpringCloud-Alibaba之Nacos

Java 程序员 后端

springboot整合缓存Redis

Java 程序员 后端

Java的jvm与gc概述

小鲍侃java

11月日更

手把手教你如何配置DBeaver对接FusionInsigth MRS Spark2x

华为云开发者联盟

数据库 开源 Dbeaver FusionInsigth MRS Spark2x

Flink Forward Asia Hackathon 正式启动,10W 奖金等你来!

Apache Flink

大数据 flink

SpringBoot整合Redis实现声明式缓存

Java 程序员 后端

SpringBoot核心【基本配置】

Java 程序员 后端

SpringBoot系列:Spring Boot配置文件与常用注解

Java 程序员 后端

SpringCloud Alibaba 入坑(四)Sentinel基本流控规则

Java 程序员 后端

云图说|威胁检测服务赐您“火眼金睛” ,让潜在威胁无处遁行!

华为云开发者联盟

华为云 云图说 威胁检测服务 MTD

TDengine在住建行业工地管理系统落地的“操作手册”

TDengine

数据库 tdengine 后端

SpringBoot:RabbitMQ-延迟队列

Java 程序员 后端

SpringCloud-Stream实战快速入门

Java 程序员 后端

访谈和书摘:《Grails A Quick-Start Guide》_Java_Srini Penchikala_InfoQ精选文章