Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。

  • 易于使用的基于Hibernate的对象-关系映射(ORM)层
  • 称为Groovy Server Pages (GSP)的表现层技术
  • 基于Spring MVC的控制器层
  • 构建于Gant 上的命令行脚本运行环境
  • 内置Jetty服务器,不用重新启动服务器就可以进行重新加载
  • 利用内置的Spring 容器实现依赖注入
  • 基于Spring的MessageSource核心概念,提供了对国际化(i18n)的支持
  • 基于Spring事务抽象概念,实现事务服务层

grails 优点:

  1、DRY和约定优先于配置的思想,是由Rails兴起并迅速被广泛接收和欣赏的Web框架新思路。

       Grails作为JEE世界的Rails,把这些最前沿的设计理念带入已显得陈旧的JEE社区,以及由此带来的优秀的开发效率。

     Grails中的DRY主要提现在URL映射定义上(URLMappings.groovy)。在 URLMappings.groovy中定义了应用的各个URL以后,通过使用Grails预定义的动态Controller方法和GSP标签,开发者就 不必再把程序URL硬编码在各处。

     在约定优于配置方面,Grails和Rails非常相似。所谓约定优于配置,就是按照框架约定的方式来组织资源,就可以免去任何额外的配置。比如 Grails的自定义标签,存放在应用目录下的grails-app/taglib路径下,并以XXXTagLib.groovy的方式命名,就能无需任何配置就可以在GSP里使用这些标签库了。另外还有Service类,Job类,包括整个Grails应用的目录结构,都是约定由于配置原则的体现。在这 些方面JEE开发者一定会为摆脱各种繁琐的配置感到异常兴奋,并且实实在在的节约很多开发时间

  2、JVM支持,性能保障

    通过运行在JVM之上,Grails拥有一个经过多年开发,已经非常成熟,业界标准级别的运行环境。JVM的稳定性和最新版本的性能都已经相当成熟。相比 最直接的比较对象Rails,Grails在运行环境性能上的优势是比较明显的。另外,已有的Java可重用组件基本都可以直接使用于Grails,无疑 也是Grails的一个明显优势

  3、采用groovy语言开发

    对Grails来说,Groovy是其能够实现灵活多变的快速开发,区别于其他运行于JVM之上的Web框架的核心技术。

    Groovy的动态特性是其最大亮点,在这方面几乎不输于Ruby等其他热门的动态语言。meta-programming,closure等等热门的动 态语言特性在Groovy中都有很好的实现。而且,Groovy程序能够编译为JVM字节码的.class文件,直接运行在JVM上,Groovy程序的 性能能够得到一定的帮助。Groovy能够和Java混合编写,混合编译,使得Java程序员能不用浪费自己在Java语言上的大量投入,更轻松快捷地进 入Groovy的世界。使用Groovy编程,相比使用Java来说快速轻松得多,对为数众多的Java程序员颇有吸引力

  4、插件系统

    Grails的插件系统也是其亮点之一。首先,和Rails,Django等Web框架类似,基于微内核的思想,插件(可重用模块)是框架的一等公民。 Grails除了核心模块以外的功能几乎都是通过插件方式实现的。实际上,一个Grails插件和一个Grails应用基本是完全一样的,同样可以使用grails run-app命令来运行。区别仅在于一个插件的根目录下需要提供一个FooPlugin.groovy文件,提供插件的一些描述信息

  5、GSP和标签库

    Grails前端开发使用的是GSP(Grails Server Pages),开发者可以使用Grails特定的模板语法编写gsp动态页面,并且可以直接使用Groovy脚本或是各种预定义和自定义的标签库 (taglib)。这么看起来和JSP区别不大,而实际上,Grails带给开发者的是远比名字上的区别大得多的开发效率上的进步。

grails 缺点

  6、复合框架整合复杂

    Grails使用多种已有的成熟开源JEE组件,同样是一把双刃剑。多种组件整合在一起,出现整合方面的问题的话调试修改都会比较吃力

  7、尚不成熟的社区

    这可能是Grails最关键的隐藏的弱点。一个开源项目的成功与否很大程度上取决于其社区。Rails/Ruby,Django/Python,包括 PHP都属于现今最好的开源社区,活跃的社区对开源项目的成长起到巨大的作用。但是Grails的社区至今还是相当小众,在人数和质量上都无法和以上三大 社区相比。一个不成熟的社区带来的一个明显问题就是Grails项目的开发进度比较慢,相关文档和资料缺乏

grails 优缺点分析的更多相关文章

  1. 三种Tomcat集群方式的优缺点分析

    三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用D ...

  2. python优缺点分析及python种类

    Python的缺点: 相较于其它类型的语言可能运行速度上会略差.C语言的运行性能速度上最好,因为C最接近计算机底层. Python的优点: 大数据处理,有专门的功能模块,比较方便. Linux自带Py ...

  3. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

  4. JDK和Cglib实现动态代理实例及优缺点分析

    Spring AOP使用的核心技术是动态代理,说到动态代理就不得不和设计模式中的代理模式联系起来,通过代理模式我们可以对目标类进行功能增强,在某个方法的执行前后增加一些操作,例如计算方法执行效率.打印 ...

  5. Javascript中,实现类与继承的方法和优缺点分析

    Javascript是一种弱类型语言,不存在类的概念,但在js中可以模仿类似于JAVA中的类,实现类与继承 第一种方法:利用Javascript中的原型链 //首先定义一个父类 function An ...

  6. JWT 身份认证优缺点分析以及常见问题解决方案

    本文转载自:JWT 身份认证优缺点分析以及常见问题解决方案 Token 认证的优势 相比于 Session 认证的方式来说,使用 token 进行身份认证主要有下面三个优势: 1.无状态 token ...

  7. Ngen生成Native代码实战及优缺点分析

    先科普一下,.Net是一个用于Windows的托管代码模型,用于高效构建具有视觉上引人注目的用户体验的应用程序.但这个模型生成的代码并非可执行代码,而是由.Net公共语言运行库环境执行的IL代码.所以 ...

  8. 深入浅出分析MySQL MyISAM与INNODB索引原理、优缺点分析

    本文浅显的分析了MySQL索引的原理及针对主程面试的一些问题,对各种资料进行了分析总结,分享给大家,希望祝大家早上走上属于自己的"成金之路". 学习知识最好的方式是带着问题去研究所 ...

  9. 大数据开发实战:HDFS和MapReduce优缺点分析

    一. HDFS和MapReduce优缺点 1.HDFS的优势 HDFS的英文全称是 Hadoop Distributed File System,即Hadoop分布式文件系统,它是Hadoop的核心子 ...

随机推荐

  1. java web学习总结(三十) -------------------JSTL表达式

    一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...

  2. Atitit 游戏的原理与概论attilax总结

    Atitit 游戏的原理与概论attilax总结 1. 游戏历史2 1.1.1. 盘点PC游戏史上最重要的50款游戏2 1.1.2. 回味人类文明进程 五款经典的历史游戏2 2. 游戏类型(主要分为6 ...

  3. 初识Spring框架实现IOC和DI(依赖注入)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的, IoC是 ...

  4. json简单使用

    web工程中如何将大量数据从服务器端传送到浏览器一直是很重要的一个问题. 其中一个解决方法是在服务器端将将数据封装成json格式,然后传给前台.废话不多说,下面讲干货. 1.要用json必须下载一个库 ...

  5. [Erlang 0113] Elixir 编译流程梳理

    注意:目前Elixir版本还不稳定,代码调整较大,本文随时失效      之前简单演示过如何从elixir ex代码生成并运行Erlang代码,下面仔细梳理一遍elixir文件的编译过程,书接上文,从 ...

  6. C# dynamic 动态创建 json

    1. 如何通过C# 的dynamic 创建如下json 对象? { "query": { "match": [{ "name": " ...

  7. x01.Tetris: 俄罗斯方块

    最强大脑有个小孩玩俄罗斯方块游戏神乎其技,那么,就写一个吧,玩玩而已. 由于逻辑简单,又作了一些简化,所以代码并不多. using System; using System.Collections.G ...

  8. HDOJ 1326. Box of Bricks 纯水题

    Box of Bricks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  9. Everything(文件搜索神器)

    前言 Everything官网: http://www.voidtools.com/ 软件版本: V1.3.4.686 (x64) 操作系统: windows 7/10 搜索FTP(内网)资源 比如内 ...

  10. eclipse安装版本

    http://www.08kan.com/gwk/MzAwOTE3NDY5OA/203521023/1/cdf557d3a1d4535a6c691ce756c3f8b1.html