前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料

《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料

作者头像
一个会写诗的程序员
发布2018-08-20 10:11:44
1.3K0
发布2018-08-20 10:11:44
举报

《Groovy极简教程》第1章 Groovy简介

Groovy: 绝妙的; 流行的; 最佳状态的。 A multi-faceted language for the Java platform. (JVM平台上的多面体语言。)

官网文档:http://www.groovy-lang.org/documentation.html Github源码:https://github.com/apache/groovy

Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性。

基本特点

1、 构建在强大的Java语言之上 并 添加了从Python,Ruby和Smalltalk等语言中学到的 诸多特征,例如动态类型转换、闭包和元编程(metaprogramming)支持。。 2、为Java开发者提供了 现代最流行的编程语言特性,而且学习成本很低(几乎为零)。 3、 支持DSL(Domain Specific Languages领域定义语言)和其它简洁的语法,让代码变得易于阅读和维护。 4、受检查类型异常(Checked Exception)也可以不用捕获。 5、 Groovy拥有处理原生类型,面向对象以及一个Ant DSL,使得创建Shell Scripts变得非常简单。 6、在开发Web,GUI,数据库或控制台程序时 通过 减少框架性代码 大大提高了开发者的效率。 7、支持单元测试和模拟(对象),可以 简化测试。 8、无缝集成 所有已经存在的 Java对象和类库。 9、直接编译成Java字节码,这样可以在任何使用Java的地方 使用Groovy。[2] 10、支持函数式编程,不需要main函数。 11、一些新的运算符。 12、默认导入常用的包。 13、断言不支持jvm的-ea参数进行开关。 14、支持对对象进行布尔求值。 15、类不支持default作用域,且默认作用域为public。 16、groovy中基本类型也是对象,可以直接调用对象的方法。

Groovy 语法与Java 语言的语法很相似,虽然 Groovy 的语法源于Smalltalk和Ruby这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby与 Groovy 不同,因为它的语法与 Java 语法差异很大。) 许多 Java 开发人员喜欢 Groovy 代码和 Java 代码的相似性。从学习的角度看,如果知道如何编写 Java 代码,那就已经了解 Groovy 了。

Groovy 和 Java 语言的主要区别是:完成同样的任务所需的 Groovy 代码比 Java 代码更少。

Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码,简单说就是,我们可以编程过程中可以实现Java语言和Groovy之间的无缝集成。

由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。

Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

为什么要学习Groovy

为什么要学习Groovy,简单来说就是Groovy可以用较少的代码实现较多的功能。

Groovy 的松散的Java 语法允许省略分号和修改符。 除非另行指定,Groovy 的所有内容都为 public。 Groovy 允许定义简单脚本,同时无需定义正规的 class 对象。 Groovy 在普通的常用 Java 对象上增加了一些独特的方法和快捷方式,使得它们更容易使用。 变量,属性,方法,闭包的参数以及方法的返回类型都是可有可无的。 Groovy 默认导入常用的包。

Groovy生态圈

Groovy的生态圈已经很全面了。

Gradle

自动化构建工具,通过编写简单的Groovy脚本,便可进行依赖管理和项目构建。如果你想使用Android Studio进行Android开发,Gradle已经成为了Android Studio中的默认构建工具了。

Grails

一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架。

Spock

测试框架,可通过其特有的DSL编写测试案例;

Griffon

Swing开发框架,其灵感来自于Grails。

Groovy

一个面向对象的脚本语言,跟Java还是有很大不同的,多了解一门语言,对于提高自己的综合编程能力也是大有裨益的。另外,如果你是一名Java软件工程师,学习Groovy几乎可以说是零成本的。既然有这么多好处,确实是时候来学习一下Groovy了。

动态类型

类型对于变量,属性,方法,闭包的参数以及方法的返回类型都是可有可无的,都是在给变量赋值的时候才决定它的类型, 不同的类型会在后面用到,任何类型都可以被使用,即使是基本类型 (通过自动包装(autoboxing)). 当需要时,很多类型之间的转换都会自动发生,比如在这些类型之间的转换: 字符串(String),基本类型(如int) 和类型的包装类 (如Integer)之间,可以把不同的基本类型添加到同一数组(collections)中。

闭包

闭包就是可以使用参数的代码片段,每个闭包会被编译成继承groovy.lang.Closure类的类,这个类有一个叫call方法,通过该方法可以传递参数并调用这个闭包.它们可以访问并修改在闭包创建的范围内的变量,在闭包内创建的变量在闭包被调用的范围内同样可以被引用, 闭包可以保存在变量中并被作为参数传递到方法中。

Groovy类和java类一样,完全可以用标准java bean的语法定义一个Groovy类。但作为另一种语言,可以使用更Groovy的方式定义类,这样的好处是,可以少写一半以上的javabean代码。

(1)不需public修饰符 如前面所言,Groovy的默认访问修饰符就是public,如果Groovy类成员需要public修饰,则根本不用写它。 (2)不需要类型说明 同样前面也说过,Groovy也不关心变量和方法参数的具体类型。 (3)不需要getter/setter方法 在很多ide(如eclipse)早就可以为程序员自动产生getter/setter方法了,在Groovy中,不需要getter/setter方法--所有类成员(如果是默认的public)根本不用通过getter/setter方法引用它们(当然,如果一定要通过getter/setter方法访问成员属性,Groovy也提供了它们)。 (4)不需要构造函数 不再需要程序员声明任何构造函数,因为实际上只需要两个构造函数(1个不带参数的默认构造函数,1个只带一个map参数的构造函数--由于是map类型,通过这个参数可以构造对象时任意初始化它的成员变量)。 (5)不需要return Groovy中,方法不需要return来返回值。 (6)不需要() Groovy中方法调用可以省略()(构造函数除外)。

文件与类的关系

在Groovy中类和文件的对应关系并不像Java中那么固定(Java中一个文件只能有一个声明为public的类和其他一些非公共的类和内嵌类) 。在同一个groovy文件中可以包含多个public的类定义。

具体规则如下:

如果在一个groovy文件中没有任何类定义,它将被当做script来处理,也就意味着这个文件将被透明的转换为一个Script类型的类,这个自动转换得到的类将使用原始的groovy文件名(去掉扩展名,没有包名,在default包中)作为类的名字。groovy文件的内容被打包进run方法,另外在新产生的类中被加入一个main方法以进行外部执行该脚本。

如果在groovy文件正好有一个类的定义,并且该类的名字与文件名称相同,那么这就和java中的类与文件的一一对应关系相同。

在一个groovy文件中可以包含多个不同可见性的类定义,并且没有强制性的要求其中有一个类的类名与文件名相同。groovyc编译器会很乐于把该文件中定义的所有的类都编译成*.class文件。如果希望能够直接调用这个groovy script,比如说在使用groovy命令行或者在某个IDE中执行,那么应该在该文件中的第一个类中定义一个main方法。

在一个groovy文件中可以混合类的定义和脚本定义。在这种情况下,那些脚本代码将会变成直接调用的主类,所以在这种情况下不应该再定义一个和文件同名的类。

在没有经过明确的编译过程即执行时,groovy将通过文件名来查找类。在这种情况下,名称将会很重要。Groovy只能找到那些和文件名匹配的类。在找到这种名字匹配的类时,找到的文件中定义的其他类将被解析并变得对groovy可见。

参考资料

1.http://baike.baidu.com/item/Groovy?sefr=enterbtn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.04.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《Groovy极简教程》第1章 Groovy简介
    • 基本特点
      • 为什么要学习Groovy
        • Groovy生态圈
          • Gradle
          • Grails
          • Spock
          • Griffon
          • Groovy
        • 动态类型
          • 闭包
              • 文件与类的关系
              • 参考资料
              相关产品与服务
              项目管理
              CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档