COMO VOCÊ NUNCA VIU
/DEV/FELIPEMAMUD
Disclaimer
It's Groovy
● Groovy is object-oriented dynamic language by default, but…
… can be optionally typed;
… can be static type checking with @TypeChecked;
● dynamic != interpreted;
● static compilation with @CompileStatic;
● Groovy compiles down to JVM bytecode;
● Script vs Classes;
A little bit of history
2003 2007 2008
1.0
2011 2012
2.0
2014 20152005
Compilation phases
1. Initialization (read source files and config compiler)
2. Parsing (text → concrete syntax tree; Antlr2)
3. Conversion (CST → AST) @Grab
4. Semantic Analysis (resolve classes, consistency and grammar) @Lazy @Builder @Field @Log
5. Canonicalization (AST finalize and last chance to use AST) @Delegate @ToString @Immutable
6. Instruction Selection (instruction set for bytecode / type checking) @CompileStatic @TypeChecked
7. Class Generation (create bytecode in memory, AST → bytecode)
8. Output (binary output .class to file system)
9. Finalization (perform cleanup tasks, unused today!)
Awesome!
● Optional (Typing, Semicolons, Parentheses, public & return keyword);
● Native syntax constructs (Closures, Lists, Maps, Regex, Ranges)
● Boilerplate mode off; (String, BigDecimal, Null, Truth, Switch)
● Java Interoperability & integration;
● Groovy Development Kit enhancements (GDK);
● DSL easy mode on;
● Builders;
● AST Transformations;
Groovy’s nature
programming language…
as type safe as you want it
static type checking
as fast as you need
static compilation
as functional as you make it
closures, immutable, etc…
Ecosystem
References
● Groovy documentation
http://groovy-lang.org/documentation.html
● Guillaume Laforge's Blog
http://glaforge.appspot.com
● Cédric Champeau's Blog
http://melix.github.io/blog
● Groovy in Action, 2nd Edition
https://www.manning.com/books/groovy-in-action-second-edition
JOIN US!
FRIENDSTECHDAY.COM
SHARE, LEARN E CONTRIBUTE!
Felipe Mamud
@ftmamud
THANK YOU!

TDC2016SP - Groovy como você nunca viu

  • 1.
  • 2.
  • 3.
  • 4.
    It's Groovy ● Groovyis object-oriented dynamic language by default, but… … can be optionally typed; … can be static type checking with @TypeChecked; ● dynamic != interpreted; ● static compilation with @CompileStatic; ● Groovy compiles down to JVM bytecode; ● Script vs Classes;
  • 5.
    A little bitof history 2003 2007 2008 1.0 2011 2012 2.0 2014 20152005
  • 6.
    Compilation phases 1. Initialization(read source files and config compiler) 2. Parsing (text → concrete syntax tree; Antlr2) 3. Conversion (CST → AST) @Grab 4. Semantic Analysis (resolve classes, consistency and grammar) @Lazy @Builder @Field @Log 5. Canonicalization (AST finalize and last chance to use AST) @Delegate @ToString @Immutable 6. Instruction Selection (instruction set for bytecode / type checking) @CompileStatic @TypeChecked 7. Class Generation (create bytecode in memory, AST → bytecode) 8. Output (binary output .class to file system) 9. Finalization (perform cleanup tasks, unused today!)
  • 7.
    Awesome! ● Optional (Typing,Semicolons, Parentheses, public & return keyword); ● Native syntax constructs (Closures, Lists, Maps, Regex, Ranges) ● Boilerplate mode off; (String, BigDecimal, Null, Truth, Switch) ● Java Interoperability & integration; ● Groovy Development Kit enhancements (GDK); ● DSL easy mode on; ● Builders; ● AST Transformations;
  • 8.
    Groovy’s nature programming language… astype safe as you want it static type checking as fast as you need static compilation as functional as you make it closures, immutable, etc…
  • 9.
  • 10.
    References ● Groovy documentation http://groovy-lang.org/documentation.html ●Guillaume Laforge's Blog http://glaforge.appspot.com ● Cédric Champeau's Blog http://melix.github.io/blog ● Groovy in Action, 2nd Edition https://www.manning.com/books/groovy-in-action-second-edition
  • 11.
  • 12.