groovy grails_Groovy和Grails理解–第1部分

groovy grails

介绍

如今,企业需要敏捷平台来快速开发应用程序,同时要保证服务质量,符合体系结构和设计标准。 有两个关键因素影响我们的敏捷能力。 首先,这是每个参与人员的态度。 其次是我们用来完成工作的语言,框架和工具。 近年来出现了一些语言和框架,例如Groovy和Grails,它们支持更敏捷的开发方法。 Groovy是一种动态语言,可在Java虚拟机上运行。 Groovy由James Strachan和Bob McWhirter [28]在2003年开发,是一种与Ruby,Smalltalk,Python和Perl等语言非常相似的语言。

Grails是Groovy之上的一个开放源代码Web应用程序框架,该框架执行约定-超过-配置,遵循DRY(不要重复自己)原则,并且总体上是轻量级的,使其成为一个可靠的敏捷框架。

Groovy

Groovy是Java平台的一种面向对象的编程语言。 这是一种动态语言,其功能类似于Python,Ruby,Perl和Smalltalk。 它可以用作Java平台的脚本语言。 它被动态编译为Java虚拟机(JVM)字节代码,并与其他Java代码和库互操作。

Groovy…

  • Java虚拟机的敏捷和动态语言
  • 基于Java的优势,但具有受Python,Ruby和Smalltalk等语言启发的其他强大功能
  • 使学习者几乎零学习曲线的 Java开发人员可以使用现代编程功能
  • 支持特定领域语言和其他紧凑语法,因此您的代码变得易于阅读和维护
  • 强大的处理原语 ,OO能力和Ant DSL使编写Shell和构建脚本变得容易
  • 在开发Web,GUI,数据库或控制台应用程序时,通过减少脚手架代码来提高开发人员的生产力
  • 通过支持单元测试和开箱即用的模型来简化测试
  • 与所有现有的Java类和库无缝集成
  • 直接编译为Java字节码,因此您可以在任何可以使用Java的地方使用它

建筑

Groovy使用类似于Java的语法,该语法可动态编译为Java字节代码,因此Groovy可以与Java代码和Java库无缝地协同工作。 Java的Groovy使Groovy非常强大。 当应用程序需要现有Groovy库无法实现的功能时,开发人员仍然可以编写Java代码以实现该目标,反之亦然,可以将Java代码转换为Groovy

建筑

图1:Java平台上的Groovy

Groovy就像Java的超级版本。 它可以利用Java的企业功能,还具有很酷的生产力功能,例如动作,构建器和动态类型。

Groovy开发环境

Groovy需要Java,因此您需要有可用的版本(而groovy 1.6支持JDK 1.4或更高版本,对于groovy 1.7及更高版本,至少需要JDK 1.5)。 从下载页面( http://groovy.codehaus.org/Download )下载Groovy安装程序或二进制文件,并按照安装说明进行操作

下载二进制文件

  • 设置GROOVY_HOME
  • 将GROOVY_HOME / bin添加到您的PATH
  • 设置JAVA_HOME

分号

在Groovy中使用分号(;)完全是可选的。 唯一必须使用分号的时间是在同一行上放置多个函数调用时

分号

数据类型声明

创建对象时,不必显式定义其类型。 通过使用def关键字,Groovy将自动检测必须使用哪种对象类型。

数据类型

尽管是可选的,但是Groovy仍然允许显式声明对象类型。 这在仅允许一种数据类型的情况下可能很有用。

Groovy String

Groovy字符串(也称为“ GString”)允许将任何类型的逻辑集成到字符串定义中。 这可以通过美元符号($)和(可选)花括号({})完成。 Groovy会自动识别String和GString之间的区别。

Groovy String

嵌入式报价

Groovy有一个使用Strings的好方法。 在Java中,单引号表示原始类型char。 在Groovy中,任何用单引号或双引号引起来的内容都将转换为String。 当使用包含引号的字符串时,这非常有用。 如本例所示,带双引号的字符串可以用单引号引起来,反之亦然。 要转义报价,请使用反斜杠

嵌入式的

馆藏

Groovy承认三种不同类型的集合。 前两个List和Map与Java中使用的相同。 列表使用基于空值的索引来检索项目,而地图使用唯一键来查找项目。 但是,范围或多或少是动态语言所独有的。 Groovy中一个简单的列表示例是:

收藏1

罗马词的第一个条目为零,即单词“ nulla”,没有符号。 通过将值分配给对应的键来创建映射,例如:

收藏2

尽管范围没有出现在标准Java库中,但是大多数程序员对范围是什么有一个直观的认识。 有效地,范围定义了起点和终点,并带有如何从起点移动到终点的概念。 Groovy提供了用于支持范围的文字以及其他了解范围的语言功能,例如for语句。 声明范围很容易:

收藏3

宣告课程

类是面向对象编程的基石,因为它们定义了从中绘制对象的蓝图。 下面的代码包含一个名为Book的简单Groovy类,它具有一个实例变量title,一个设置标题的构造函数以及该标题的getter方法。 默认情况下,所有方法都是公共的,因此排除访问修饰符。

宣告课

退货单

Groovy中方法的最后一行自动是return语句。 因此,可以省略显式的return语句

返回

要返回不在最后一行的值,必须显式声明return语句。

返回2

布尔型

Groovy中的每个对象都有一个布尔表示形式,该值取决于它的内容和类型。 例如,字符串,如果填充则返回true,如果为空则返回false。 这样可以进行快速的“真实”检查,并减少涉及的代码量。

布尔值

运算符重载

运算符重载允许重写运算符的默认用法,以便为常用方法提供更直观的方法。 下表显示了Groovy的实现方式。

运算符叠加

循环

由于Groovy起源于Java,因此它本身支持for和while循环。 Groovy的for-each循环与Java等效语法相比在语法上有细微差别。 Java for-each循环如下所示:

循环1

但是,Groovy的对应者使用关键字“ in”而不是Java的冒号

Loop2

Groovy具有一些特殊的收藏功能,其中包括范围。 Groovy提供了一些额外的循环技术,可以与这些技术一起使用。 each方法可用于集合,并为列表中的每个项目执行给定的关闭。

循环3

eachWithIndex的作用基本相同,但是保留一个可以从闭包内部访问的带编号的索引。

循环4

异常处理

Groovy让程序员决定是否捕获异常。 在下面的示例中,开发人员尝试打开并读取文件的内容。 当他知道文件存在时,他不需要用try and catch块将方法包围起来。 Groovy使程序员可以控制异常,因此他可以选择抛出一个异常,但是他不需要这样做。 Java不会编译代码,因为它期望抛出异常FileNotFoundException的try和catch块

例外

上面的示例显示了打开文件的两种方法:有和没有try and catch块。 当开发人员知道文件存在时(如上面的第一个示例所示),他不需要进行尝试捕获。 如前所述,开发人员可以选择是否要捕获异常-这发生在上面的第二个示例中。 有时,代码需要捕获多个异常。 Groovy允许开发人员一次捕获所有异常,而不是为每次尝试编写catch语句

例外2

请注意,上面的代码仅引发一个异常:函数openFile不存在,因此它直接引发异常。 如果存在,由于URL格式错误,将引发另一个异常。 捕获将显示异常:这与打开文件中的捕获相同

测试中

与Java中的测试一样,Groovy中的测试非常广泛。 测试应用程序的常用方法是使用JUnit测试。 Groovy中JUnit的名称是GUnit。 Codehaus和IBM撰写了有关Groovy中的单元测试的文章。 可在以下网站上找到有关其发现的文档:

由于主题GUnit不支持我们的主要问题,因此将不会对其进行完整描述。 基本上,它与JUnit测试相同。

数据库整合

Groovy为用户提供了围绕标准Java类的包装器,从而在使用数据库时增加了更多功能并易于使用。 重要的是要了解,由于JDBC仍在使用中,因此Groovy当前不能替代Java的所有原始数据库连接。

资源资源

参考: Groovy&Grails理解–第1部分来自我们的JCG合作伙伴 Nitin Kumar,位于Tech My Talk博客上。

翻译自: https://www.javacodegeeks.com/2013/04/groovy-grails-understanding-part-1.html

groovy grails

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值