SlideShare a Scribd company logo
1 of 19
胡键 www.groovyq.net Groovy for Java Programmer
借用Python的一个漫画 Groovy can make you fly! http://www.mostly-useless.com/blog/2007/12/07/python-makes-you-fly/
兼容绝大多数Java语法 良好的互操作性 代码简练,去掉了大部分的boilerplate code 动态语言的好处 健康的生态系统 Groovy对于Java开发者的优势
自动import常用的包: java.lang、java.util、java.io、java.net groovy.lang、groovy.util 缺省使用更精确的数值类: java.math.BigDecimal java.math.BigInteger Groovy的特点
简化的语法: System.out.println => println System.out.print => print 在参数个数>1时,可省略括号 a.f p1,p2 return可选,省略时,最后一个语句值为返回值 ;可选 方法、类缺省是public ?.操作符:a?.f() assert总是有效:power assert 改进的循环: 1.upto(3){…} 、 3.times{…} 、 0.step(3,1){…} Groovy Truth As操作符 Groovy的特点
让集合变得更好用 优化定义: List: [1, 3, 4, 1, 8, 9, 2, 6] Map: ['C++' : 'Stroustrup' , 'Java' : 'Gosling' , 'Lisp' : 'McCarthy' ] []操作符,索引类型可以是: 正、负、区间、键。 大量方便的方法: each、reverseEach、eachWithIndex、collect、find、findAll、findIndexOf、sum、inject、join、flatten、groupBy、any、every…… Groovy的特点
字符串的改进 三种定义:’’、””、”””””” GString:“Today $company stock closed at $price” 字符串=字符集合,可直接使用任何集合方法和操作符 正则表达式: 定义方式~”RegEx”或/RegEx/ 匹配: =~、==~ Groovy的特点
Duck Typing 如果走路像鸭子,叫声像鸭子,那它就是鸭子 Groovy的特点
闭包无处不在 定义:def c= {…} 特点:似函数而非函数,代码即数据 Groovy的特点
GroovyBean:JavaBean的升级版 定义的是属性,故无需getter/setter 构造函数中可使用命名参数 缺省为public Groovy的特点
强大的MOP,运行时改变类的行为 方法拦截 before、after、around 方法注入 给类添加新方法 方法合成 “拦截、缓存、调用”模式 Groovy的特点
便捷的XML处理 DOMCategory XMLParser XMLSlurper Groovy的特点
AST Transformation 编译时的MOP,直接作用于字节码,类似静态的AOP编织过程 Groovy缺省提供了大量的Transformation @Category、@Mixin、@Delegate、@Immutable、@Lazy、@Singleton、@Log、@Newify、@PackageScope、@Bindable、@Vetoable、@EqualsAndHashCode…… 允许创建自己的Transformation Groovy的特点
GDK给Java对象添加了大量便捷方法 一个GSQL的例子 Groovy的特点
Builder 缺省的几个Builder:MarkupBuilder、AntBuilder、SwingBuilder…… Groovy的特点
Builder 构建DSL的利器: 扩展BuilderSupport 利用FactoryBuilderSupport Groovy的特点
Groovy的生态系统 除了这些,几乎主流Java开源框架都支持Groovy。 其余请参考: http://groovy.codehaus.org/Modules
大量的参考书籍
关于更多Groovy/Grails的中文信息,请访问: 谢谢! http://www.groovyq.net

More Related Content

Viewers also liked

持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术foxgem
 
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developersfoxgem
 
OpenParty西安:DSL in Groovy
OpenParty西安:DSL in GroovyOpenParty西安:DSL in Groovy
OpenParty西安:DSL in Groovyfoxgem
 
浅说Vertx
浅说Vertx浅说Vertx
浅说Vertxfoxgem
 
Factoring: Liquidez inmediata para crecer
Factoring: Liquidez inmediata para crecerFactoring: Liquidez inmediata para crecer
Factoring: Liquidez inmediata para crecerGermán Lynch Navarro
 

Viewers also liked (11)

持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术持续交付 - 使用云计算和虚拟化技术
持续交付 - 使用云计算和虚拟化技术
 
Groovy:Candy for Java Developers
Groovy:Candy for Java DevelopersGroovy:Candy for Java Developers
Groovy:Candy for Java Developers
 
Portafolio etp
Portafolio etpPortafolio etp
Portafolio etp
 
OpenParty西安:DSL in Groovy
OpenParty西安:DSL in GroovyOpenParty西安:DSL in Groovy
OpenParty西安:DSL in Groovy
 
浅说Vertx
浅说Vertx浅说Vertx
浅说Vertx
 
Factoring: Liquidez inmediata para crecer
Factoring: Liquidez inmediata para crecerFactoring: Liquidez inmediata para crecer
Factoring: Liquidez inmediata para crecer
 
Mantra
MantraMantra
Mantra
 
Movil
MovilMovil
Movil
 
Widget Financiero
Widget FinancieroWidget Financiero
Widget Financiero
 
Camping
CampingCamping
Camping
 
SL
SLSL
SL
 

Similar to Groovy for Java Programmer

轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final Paul Chao
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)xzdbd
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7javatwo2011
 
Groovy简介
Groovy简介Groovy简介
Groovy简介profeter
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 
11132020_python tutor.pdf
11132020_python tutor.pdf11132020_python tutor.pdf
11132020_python tutor.pdfssuserc840d7
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗政斌 楊
 
为什么要学Python
为什么要学Python为什么要学Python
为什么要学PythonDepeng Cong
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby建興 王
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_finalWei Sun
 
Golangintro
GolangintroGolangintro
Golangintro理 傅
 
网易移动自动化测试实践(孔庆云)
网易移动自动化测试实践(孔庆云)网易移动自动化测试实践(孔庆云)
网易移动自动化测试实践(孔庆云)drewz lin
 
Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]yiditushe
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source ProjectsGeorge Ang
 
2006 recycle opensourceprojects
2006 recycle opensourceprojects2006 recycle opensourceprojects
2006 recycle opensourceprojectsGeorge Ang
 
Pyramid框架介绍
Pyramid框架介绍Pyramid框架介绍
Pyramid框架介绍panjunyong
 

Similar to Groovy for Java Programmer (20)

轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Introduction to Golang final
Introduction to Golang final Introduction to Golang final
Introduction to Golang final
 
Java 1(Java概述)
Java 1(Java概述)Java 1(Java概述)
Java 1(Java概述)
 
千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7千呼萬喚始出來的Java SE 7
千呼萬喚始出來的Java SE 7
 
Groovy简介
Groovy简介Groovy简介
Groovy简介
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 
beidakejian
beidakejianbeidakejian
beidakejian
 
11132020_python tutor.pdf
11132020_python tutor.pdf11132020_python tutor.pdf
11132020_python tutor.pdf
 
Golang 入門初體驗
Golang 入門初體驗Golang 入門初體驗
Golang 入門初體驗
 
为什么要学Python
为什么要学Python为什么要学Python
为什么要学Python
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby從 Java programmer 的觀點看 ruby
從 Java programmer 的觀點看 ruby
 
Using google appengine_final
Using google appengine_finalUsing google appengine_final
Using google appengine_final
 
Golangintro
GolangintroGolangintro
Golangintro
 
网易移动自动化测试实践(孔庆云)
网易移动自动化测试实践(孔庆云)网易移动自动化测试实践(孔庆云)
网易移动自动化测试实践(孔庆云)
 
Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]Java Jdk6学习笔记[Ppt]
Java Jdk6学习笔记[Ppt]
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source Projects
 
2006 recycle opensourceprojects
2006 recycle opensourceprojects2006 recycle opensourceprojects
2006 recycle opensourceprojects
 
Pyramid框架介绍
Pyramid框架介绍Pyramid框架介绍
Pyramid框架介绍
 

Groovy for Java Programmer