在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

访谈和书摘:《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:002888
用户头像

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

关注

评论

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

一次用户故事拆分分享

Bruce Talk

敏捷 Agile 用户故事 User Story

读书有用吗

孙苏勇

读书

欢迎 ProForma 的制造商 ThinkTilt 加入 Atlassian 的大家庭!

Atlassian

敏捷 esm ITSM Atlssian JiraServiceManagement

当区块链遇到工业互联网,浪潮云洲链正在那里

云计算

大学生调研:在选择工作时,最看重什么?

石云升

28天写作 4月日更 1 周年盛典

噱头or契机:多端协同游戏的草蛇灰线

脑极体

Java最前沿技术——ZGC

AI乔治

Java 架构 jdk ZGC JVM

HZFE 快报002 / 比特币7年来首次跌破50天均线

HZFEStudio

大前端 金融科技 科技互联网 资讯

网络协议学习笔记 Day2

穿过生命散发芬芳

网络协议 4月日更

苹果(Apple Watch)手表使用必知必会19条

Flychen

苹果手表 IWatch Apple Watch

Git 常用命令速查

箭上有毒

4月日更

关于读书的随想

小天同学

读书 4月日更

内容平台与热点挖掘思考

程序员架构进阶

28天写作 4月日更 领域思考 内容平台

【得物技术】得物分布式UI自动化实践

得物技术

测试 UI 质量 自动化测试 得物技术

深入汇编指令理解Java关键字volatile

AI乔治

Java 架构 volatile Java内存模型

如何利用 Google 开源工具 Ko 在 kubernetes 建并部署 Go 应用

公众号:云原生Serverless

Kubernetes 云原生

Golang 反射

escray

学习 极客时间 Go 语言 4月日更

微信读书又更新,吃灰已久的Pencil又能拿出来遛一遛了。

彭宏豪95

效率工具 读书 阅读 4月日更 微信读书

高效获取信息的几点经验

彭宏豪95

效率 信息 阅读 4月日更

浅析 Linux 中的 I/O 管理

赖猫

Linux

基于NIO高性能、可扩展网络应用库:xSocket

风翱

4月日更 xSocket

大数据-数据处理分类篇

进击的梦清

大数据 批处理 流式计算框架

打通本地部署和公有云,混合云架构让“鱼”和“熊掌”兼得(一)

UCloud技术

混合云

ShutdownHook原理

捉虫大师

Java

40 图|硬核解析用 Mac M1 玩转 SpringCloud

悟空聊架构

开源 Mac SpringCloud m1 passjava

掉坑了!GROUP_CONCAT函数引发的线上问题

AI乔治

Java MySQL 架构 GROUPING运算符

ceph-csi源码分析(1)-组件介绍与部署yaml分析

良凯尔

Kubernetes 源码分析 Ceph CSI

Flink的Checkpoint持久化存储方案

五分钟学大数据

flink 4月日更

太厉害了,终于有人能把Ansible讲的明明白白了,建议收藏

沐风

ansible

产品训练营第三周作业

innovator琳

产品

Python OOP-2

若尘

面向对象 oop 面向对象编程 Python编程

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