亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

对 Grails 之误解

  • 2007-07-11
  • 本文字数:1513 字

    阅读完需:约 5 分钟

Grails 开发团队成员 Marc Palmer 发表了一篇博客文章,针对开发人员对 Grails 常见的一些误解逐一进行了说明。例如针对“对于我来说,Grails 还不够成熟”,他这样回应:

针对这个误解,我想不断增长的商业网站数量就是最好的答案了。同时,Grails 也是基于 HIbernate、Spring 和 SiteMesh 这些成熟完善的框架构建的,更不用说作为万年常青树的 Java JDK 了。Groovy 项目都已经有超过三年的历史了。

接着,对于“Grails 使用的是一门解释型语言(Groovy)”这个误解,他谈到:

Groovy 在运行时自动编译成 Java 虚拟机字节码,它绝绝对对彻彻底底不是一门解释型语言。句号。绝不。我说了绝不了么?一点儿也没错。

最后,讨论到 Grails 是否支持 Rails 的一个克隆产物,他如是回答:

Ruby on Rails 引入了不少非常好的主意,并将它们合为一体。Grails 将其中的一部分应用到了 Groovy/Java 的世界中,但加入了许多 Ruby 中并不存在的特性和概念,所有这些东西都是以一种对 Groovy 和 Java 程序员有意义的方式展现给他们的。

Graeme Rocher 顺势而上,也提出了自己的 Grails 误解和问题列表,比如说“在我们有了 JRuby on Rails 之后,谁还要 Grails 呢?”:

这个问题很有代表性,也是对“Grails 到底是什么”最大的误解之一的根本所在。JRuby on Rails 是让 Rails 运行在像 GlassFish 这样的 Java EE 容器上非常优秀的方式之一,就是这样而已。但 Grails 的目标却大为迥异,它并不是 Rails 在 Groovy 语言上的一个移植版本,而是将业界内最为强悍的组件(比如说 Spring、Hibernate、Quartz、Compass 和 SiteMesh 等)以最佳方式组合起来的一个实践,并通过采纳无配置规约(Convention-over-Configuration,CoC)使它们符合“不重复(Don’t Repeat Yourself,DRY)”原则。 我们并不是在重造轮子,而且由于 Grails 内核的绝大部分都是以 Java 编写的,它也显得更加强壮和稳定。事实上,从内核角度看 Grails 是一个 Spring MVC 应用,可以被部署到所有的主流容器之上,不仅仅只有 Glasshfish,还有大型商业容器,比如说 WebLogic、WebSphere 和 Oracle AS。

再有,“为什么 Grails 比 Rails 更适用于企业应用?”:

原因很多,最显著的两个原因就是 Spring 和 Hibernate。到目前为止,有不计其数的组织在采用 Spring 和 HIbernate,他们都有既有的 Spring 上下文环境,以及已经构造好的 Hibernate 领域对象等。 在我开始参与 Grails 项目之前,我就经历过同样的情况。我们设计 Grails 的目的就是为了让它和这些框架尽可能无缝地整合起来。因此,我们打个比方,你可以把一个用 Java 编写的 Hibernate 领域模型及其对应的配置文件直接扔进 Grails 应用中,然后就可以使用动态的查询方法,并且直接使用 GORM 了。

此外,Grails 控制器使用了标准的 Servlet API 对象(如 request、response 和 session 等),因此可以和其它的 Servlet 一起使用。毕竟,掀起它的盖头之后,我们会发现它不过是一个 Spring MVC 应用。另一方面,Rails 几乎是按照和 EJB2 一样的方式设计的(在我发现这点时,怎一个“震惊”二字了得!)。也就是说,你在扩展 ActiveController 和 ActiveRecord 等框架对象时,你也就被绑定在了这套框架上。

在 Rails 里面根本就不存在领域模型的说法,Rails 的模型就是数据库表。这当然是一件好事了,但在企业内部,同一个领域模型可能会在许多不同的应用中服用,比如说桌面应用和 Web 应用。在 Java 里,这实际上是非常成熟完善的,通过把类对象及相应映射文件打包成一个 JAR 文件即可。

亲爱的读者,关于 Grails,您还存在什么问题吗?或者您还见过对 Grails 用途的其它误解么?请在 InfoQ 的 Java 社区与我们一同分享吧。

查看英文原文: Grails Misconceptions

2007-07-11 20:301646
用户头像

发布了 117 篇内容, 共 14.9 次阅读, 收获喜欢 0 次。

关注

评论

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

elk客户端与springboot整合

小鲍侃java

签约计划第二季

数仓和数据中台长期霸权,数据湖最稳

用友BIP

数据胡

Linux一学就会之Centos-文件权限管理

学神来啦

云计算 Linux centos linux运维

云编辑 | 使用 Cloud Studio 在线撰写预览并发布 Hugo 博客

宋天伦

CloudIDE Hugo Cloud Studio

自定义View:使用二阶贝塞尔曲线绘制正弦函数

Changing Lin

12月日更

使用docker安装elk环境

小鲍侃java

签约计划第二季

荣耀周榜公布!你上榜了么?2022.1.17-1.23

InfoQ写作社区官方

话题讨论 热门活动

编曲时如何在FL Studio卷帘窗口修改单个音符音量

懒得勤快

在有道 | 同宇:一个正在老去的程序员

有道技术团队

程序员 技术人 工程师思维 人物访谈

logback获取bootstrap.yml配置

小鲍侃java

签约计划第二季

高可用 | repmgr 构建 PostgreSQL 高可用集群部署文档【建议收藏】

RadonDB

数据库 postgresql RadonDB

安全RCE之未授权访问分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

质量服务“一站式”平台搭建,NQI一站式云服务平台

电微13828808271

基于云的技术架构设计实践-第2篇

hackstoic

监控系统 签约计划第二季

在 Windows 笔记本上调试运行在 iOS 设备上的前端应用

Jerry Wang

大前端 web api iOS Developer 28天写作 12月日更

【11月】InfoQ写作平台荣耀月报:名单出炉!

InfoQ写作社区官方

话题讨论 热门活动

elk简介与背景

小鲍侃java

签约计划第二季

小企业如何落地elk日志收集系统

小鲍侃java

内容合集 签约计划第二季

Istio 实践手册 |服务网格框架对比

xcbeyond

istio 28天写作 12月日更 Istio 实践手册

使用logstash获取springboot控制台日志并传输到elasticsearch

小鲍侃java

签约计划第二季

vue全家桶合集

法医

大前端 内容合集 签约计划第二季

数据库自增 ID 用完了会咋样?

CRMEB

大型前端项目 DevOps 沉思录 —— CI 篇d

CODING DevOps

ci DevOps 持续集成 工作流

低代码发展正当时,中国将取代美国成为低代码开发的全球领导者

金小K

RPA 低代码 低代码开发 低代码平台

使用logstash监控微服务项目,并制定索引格式

小鲍侃java

签约计划第二季

数据中台的OneID是个什么鬼

用友BIP

数据中台 主数据

VirtualBox 网络配置 NAT + Host-Only

李鑫磊

Kubernetes 虚拟机 网络配置 virtualbox

一个基于HTML的可定制轮盘——帮你告别选择困难症

海拥(haiyong.site)

html 大前端 28天写作 签约计划第二季 12月日更

使用自定义注解打印logstash日志

小鲍侃java

签约计划第二季

面试腾讯:渗透测试工程师题型汇总

喀拉峻

面试 网络安全 安全 渗透测试

在 ABAP 里模拟实现 Java Spring 的依赖注入

Jerry Wang

Java 28天写作 SAP abap 12月日更

对Grails之误解_Java_Geoffrey Wiseman_InfoQ精选文章