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 itstatic type checking
as fast as you needstatic compilation
as functional as you make itclosures, immutable, etc…
Ecosystem
References
● Groovy documentationhttp://groovy-lang.org/documentation.html
● Guillaume Laforge's Bloghttp://glaforge.appspot.com
● Cédric Champeau's Bloghttp://melix.github.io/blog
● Groovy in Action, 2nd Editionhttps://www.manning.com/books/groovy-in-action-second-edition
JOIN US!FRIENDSTECHDAY.COM
SHARE, LEARN E CONTRIBUTE!
Felipe Mamud@ftmamud
THANK YOU!