Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Groovy for Java Programmer

1,465 views

Published on

Published in: Technology, News & Politics
  • Be the first to comment

Groovy for Java Programmer

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

×