1 Groovy
1.1 什么是Groovy?
groovy 是一个弱类型,动态语言,并且运行在JVM之上。它与java联系紧密。它是一个功能丰富和友好的java语言。
Groovy源代码,通过Groovy编译器编译成java字节码。为了在java虚拟机上运行Groovy代码,仅需要将Groovy JAR设置到classpath中即可。
Groovy支持标准的java结构:注解、generics、static imports、enums、varargs和lambda表达式。它简化了java语言并且改进了java语言的功能:properties, closures, dynamic methods, the Meta Object Protocol (MOP), native support for lists, maps, regular expressions, duck typing and the elvis operator。
1.2 Groovy classes and scripts
Groovy源文件的扩展名是.groovy。该源文件可以是Groovy脚本或者Groovy class。Groovy 脚本是一个代码列表,该代码列表中并不包含class的定义。Groovy脚本在编译的时候会转换为一个class,该class继承了groovy.lang.Script
类。
使用一个简短的Groovy脚本写一个经典的“Hello world”程序。
println 'Hello World'
1.3 Compatibility with Java
Groovy运行在JVM里,并且能够使用java 类库。每一个Groovy文件(脚本或class)都是java.lang.Object
的子类。
Groovy代码能够调用java代码,并且java代码能调用Groovy代码。每一个Groovy类都会被编译成一个java类。并且你能在java代码中,使用new
操作符来创建一个Groovy类的实例。该实例能被用于调用方法或者传递参数到一个java方法。Groovy类能继承java类并且java类也能继承Groovy类。
Groovy兼容java7的绝大多数语法,这将使得能够将java代码平滑的迁移到groov。
当前,groov并不支持java8的lambda表达式。
1.4 为什么使用Groovy?
Groovy聚焦于简化和易使用,作为其主导原则。
相比java,Groovy增强的功能:
l Groovy语言功能
l Groovy特殊的libraries。
l 通过Groovy 开发工具(Groovy Developer Kit),追加方法到已存在的java类,这个通常叫做Groovy JDK。
Groovy特性:
- 简化—Groovy在一段的末尾,不需要分号(;)作为结束。
return
可以省略,默认返回该方法内的最后一个表达式,方法参数两边的顶层括号可以省略。thepublic
关键字可以省略,在Groovy中默认就是public。它也是弱类型的。 - 扩展性—Groovy允许在运行时改变类和方法,例如,在一个类中,被调用的方法不存在,该类能拦截这个调用并能起作用,因此,Groovy提供了一种扩展性很好的构建模式。
- 易用性—Groovy有list、maps和正则表达式,这些直接嵌入到了该语言。
简化I/O。解析和构建XML、JSON和files,这是非常简单的,使用Groovy来做。
1.5 Groovy的默认导入包
Groovy自动导入下面的包和类,在Groovy中能被直接使用,而无需声明包名。
- groovy.lang.*
- groovy.util.*
- java.lang.*
- java.util.*
- java.net.*
- java.io.*
- java.math.BigInteger
- java.math.BigDecimal
为了之后的访问,Groovy允许简化导入,如:import javax.swing.WindowConstants as WC
.
最新文章
- CIB Training Scripts For TPC-H Benchmark
- jfreechart 整合sturts2牛刀小试
- 一个未解决的samba问题
- PHP引号转义中解决POST,GET,Mysql数据自动转义问题
- Winform後台如何動態修改App.config文件里的內容
- [转] js prototype详解
- linux根目录详解
- PL/SQL学习(四)存储过程和函数
- hdu1219
- 当浏览器输入url的时候发生了什么
- [USACO14DEC]后卫马克Guard Mark
- java.IO层次体系结构
- Jetbrains IntelliJ IDEA PyCharm 注册激活(2018最新)
- css3 实现波浪(wave)效果
- Mac OS X 恢复 VMware Fusion 虚拟机中的 vmdk 文件
- jQuery操作table数据上移、下移和置顶
- 使用Visual Studio 2013进行单元测试
- Elasticsearch 6.x 入门测试
- 微信小游戏5.2.2 没有xml支持库的问题解决
- c++删除容器中的奇数