写点什么

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

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

关注

评论

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

python 爬虫之selenium可视化爬虫

诡途

Python 爬虫 selenium

2021年ONNX开发者大会即将召开

百度大脑

百度飞桨 ONNX

揭秘盒马鲜生,如何打破收益增长天花板!

博文视点Broadview

入选Gartner全球AI报告,阿里云解读AI工程化的三大基础能力

阿里云大数据AI技术

机器学习 AI Gartner

数据分析实战项目-蛋壳公寓投诉分析

诡途

Python 数据分析 蛋壳公寓

手把手教学基于深度学习的遥感影像倾斜框算法训练与分析

cv君

人工智能 深度学习 AI 智能 视觉

Spark常见的故障排除

五分钟学大数据

大数据 spark 28天写作 3月日更

加入即可服务1.83亿个家!海尔智家让开发者面向亿万家庭

DT极客

一气之下开发了个群聊机器人

诡途

Python 办公自动化 群聊机器人

最全面试考点与面试技巧,面试必问

欢喜学安卓

android 程序员 面试 移动开发

智能家居操作系统谁最强?海尔智家独有“智家大脑”行业最领先

DT极客

在这里,每一行代码都需要被认真对待

DT极客

寻找被遗忘的勇气(二十二)

Changing Lin

3月日更

Fluid 0.5 版本发布:开启数据集缓存在线弹性扩缩容之路

阿里巴巴云原生

容器 云原生 k8s 分布式数据库 调度

【疑难杂症】关于Github私有库问题

Sher10ck

GitHub pycharm

如何优化管理,打造高效的技术团队?

有只小耳朵

团队管理 技术管理 数字化转型

一套亿级用户的IM架构技术干货(下篇):可靠性、有序性、弱网优化等

JackJiang

C 语言性能优化:循环展开

1

编程 程序员 性能优化 C语言 循环展开

【遇见Doris】基于Apache Doris的小米增长分析平台实践

ApacheDoris

问题排查 | 客户端突如其来的“白屏”等待

蚂蚁集团移动开发平台 mPaaS

html5 移动开发 mPaaS 离线包

安卓最全面试考点与面试技巧,大厂直通车!

欢喜学安卓

android 程序员 面试 移动开发

【活动回顾】5G时代的直播,将带来哪些低延迟体验

ZEGO即构

启动延时缩短 50%-80%,函数计算发布镜像加速功能

阿里巴巴云原生

Docker 容器 开发者 云原生 存储

数据产品经理实战-由BI到业务洞察

第519区

大数据 数据产品 数据分析体系

实时 摔倒识别 /运动分析/打架等异常行为识别/控制手势识别等所有行为识别全家桶 原理 + 代码 + 数据+ 模型 开源!

cv君

AI 目标检测 视频理解 引航计划

飞桨中国行首站重庆 解读产业 智造

百度大脑

百度 飞桨 中关村智酷

首席AI架构师进阶之旅开启!第4期60位AICA学员硬核开学

百度大脑

AI 百度飞桨

Flink架构体系

大数据技术指南

大数据 flink 28天写作 3月日更

致远互联低代码平台让项目管理“秒变”数字化

爱极客侠

飞桨刷新分子性质预测榜单,助力AI药物研发

百度大脑

AI 药物研发 百度飞桨

最全模型效果评估报告上线,百度EasyDL助力模型效果快速优化

百度大脑

飞桨 EasyDL

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