10 years of Groovy!
Cédric Champeau, SpringSource
About me
Past : Groovy contributor
- Bugfixes
- Modules: @Bytecode AST xform, GFreeMarker
- Core: compilation customizers, @xInterrupt, ...
- Used Groovy as a DSL for natural language processing
Present: Core Groovy committer
- Compilation configuration
- Static type checking & Static compilation
- Bugfixing...
- Groovy in Action 2 co-author
Follow me
Pivotal
Social
#groovylang
Groovy is Open Source Software
- Licensed under APL2
- 101 contributors
- 10000+ commits
- 1.7+ million downloads in 2013
- On GitHub since summer 2011
- Dependency of 25000+ OSS projects
A brief history...
What is Groovy?
- A language for the JVM (compiles to bytecode)
- The ideal Java companion
- Closures
- Scripting
- Builders
Groovy is...
- Dynamic
- Optionally (statically) typed
- Imperative
- Functional
- Metaprogramming
A brief history...
Some principles of the language
- should be easy to learn (especially coming from Java)
- should not get in the way (think checked exceptions, equals, switch, ...)
- remove boilerplate code
- DSLs FTW!
- Choice, choice, choice
Grooviness in action (1/10)
Spock specification
Grooviness in action (2/10)
DSLs
Grooviness in action (3/10)
String interpolation
Grooviness in action (4/10)
Grails where queries
Grooviness in action (5/10)
Geb browser automation
Grooviness in action (6/10)
Static compilation on demand
Grooviness in action (7/10)
Grape
Grooviness in action (8/10)
Duck typing
Grooviness in action (9/10)
AST transformations
Grooviness in action (10/10)
Gradle
A brief history...
Groovy 1.0
A brief history...
Groovy 1.0
A brief history...
Groovy 1.0
Java
Too long to fit in a slide...
Groovy
A brief history...
Groovy 1.5
- Alignment with Java 5 (annotations,...)
- Joint compilation
- Improved metaclasses (Expando metaclass)
- Performance improvements
A brief history...
Groovy 1.6
- AST transformations (@ToString, @EqualsAndHashCode, ...)
- Call site caching
- Grape module and dependency system
- JSR-223 scripting engine built-in
- metaprogramming improvements, like the EMC DSL, per-instance metaclasses, runtime mixins
A brief history...
Groovy 1.7
- Power asserts
- new GroovyScriptEngine
- SQL enhancements
A brief history...
Groovy 1.8
- Primitive optimizations
- Enhanced DSLs (command chains)
- First class JSON support
- Improved functional programming
- new GroovyScriptEngine
- SQL enhancements
A brief history...
Groovy 2.0
- Modularisation
- Static type checking/compilation
- Java 7 alignments
- Invokedynamic support
- Semantic versioning
A brief history...
Groovy 2.1
- Full invokedynamic support
- Type checking extensions
- Meta annotations
A brief history
Groovy 2.2
- Implicit closure coercion
- Improved Groovy shell (CLI)
- Static compilation extensions
- @Memoized
- Get it while it's hot!
And the future?
Groovy 2.3...
- Traits?
- Tail call optimization?
- Your favorite feature here...
And the future?
Groovy 3...
- New meta-object protocol
- Grammar rewrite
Is Groovy good for production?
It's not all about code
We need your help
- Revamped website
- Brand new documentation
- You can join us!
Questions?
←
→
/
#