0
BUILDING DSLS IN
          GROOVY
speaker.identity {
  name        'Venkat Subramaniam'
  company 'Agile Developer, Inc.'
...
Abstract

Groovy's dynamic and meta programming capabilities make it a
good candidate for implementing DSLs on the JVM. In...
Domain Specific Language
 What’s DSL?

   A language targeted at a particular type of problem

   Syntax focuses on intend...
Characteristics of a DSL

What are some of the qualities of a DSL?

  Context Driven

    Extremely context sensitive

  F...
Example of Context




       Routed to context object lst



                                      5
Example of Fluency




                     6
Examples of Groovy DSLs




                      7
Examples of Groovy DSLs


 Gant is Ant without XML

 Built on top of Ant

 Pure Groovy syntax to express builds




      ...
Examples of Groovy DSLs


 easyb is a Behavior Driven Design tool to express
 executable documentation of stories and spec...
Examples of Groovy DSLs




            Groovy’s XML Builder
            makes building XML
                  tolerable
  ...
Groovy Tricks to Build DSL
 Take advantage of closures and delegates




                                            11
Groovy Tricks to Build DSL
 Take advantage of dynamic methods
           process.groovy


                                ...
Groovy Tricks to Build DSL
    Make Use of Categories




Type conversions
------------------------
2       => int
.days =...
Groovy Tricks to Build DSL
 Make Use of ExpandoMetaClass




                                14
Groovy Tricks to Build DSL
 Make Use of ExpandoMetaClass




                                15
References
http://groovy.codehaus.org
http://docs.codehaus.org/display/GROOVY/Writing
+Domain-Specific+Languages
http://doc...
Thank You!
  Please fill in your session evaluations


You can download examples and slides from
 http://www.agiledeveloper...
Upcoming SlideShare
Loading in...5
×

Venkat Subramaniam Building DSLs In Groovy

3,229

Published on

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,229
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
92
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Transcript of "Venkat Subramaniam Building DSLs In Groovy"

  1. 1. BUILDING DSLS IN GROOVY speaker.identity { name 'Venkat Subramaniam' company 'Agile Developer, Inc.' credentials 'Programmer', 'Author', 'Trainer' blog 'http://agiledeveloper.com/blog' email 'venkats@agiledeveloper.com' }
  2. 2. Abstract Groovy's dynamic and meta programming capabilities make it a good candidate for implementing DSLs on the JVM. In this presentation we will take a look at a number of examples of DSLs implemented in Groovy. We will discuss the significance of these DSLs, present other ideas for DSLs use case, and take an look at ways to implement them. 2
  3. 3. Domain Specific Language What’s DSL? A language targeted at a particular type of problem Syntax focuses on intended domain/problem Unlike a general purpose language, you can’t use it for all kinds of stuff (or don’t want to) Limited in scope and capability Hence, they’re small and simple 3
  4. 4. Characteristics of a DSL What are some of the qualities of a DSL? Context Driven Extremely context sensitive Fluent Interfaces Provides for a humane, easy to understand interface 4
  5. 5. Example of Context Routed to context object lst 5
  6. 6. Example of Fluency 6
  7. 7. Examples of Groovy DSLs 7
  8. 8. Examples of Groovy DSLs Gant is Ant without XML Built on top of Ant Pure Groovy syntax to express builds 8
  9. 9. Examples of Groovy DSLs easyb is a Behavior Driven Design tool to express executable documentation of stories and specs Uses Groovy DSLs and is highly expressive Here’s story extracted from above “code”/DSL 9
  10. 10. Examples of Groovy DSLs Groovy’s XML Builder makes building XML tolerable 10
  11. 11. Groovy Tricks to Build DSL Take advantage of closures and delegates 11
  12. 12. Groovy Tricks to Build DSL Take advantage of dynamic methods process.groovy scores.dsl 12
  13. 13. Groovy Tricks to Build DSL Make Use of Categories Type conversions ------------------------ 2 => int .days => int .ago => Calendar .at => Date 13
  14. 14. Groovy Tricks to Build DSL Make Use of ExpandoMetaClass 14
  15. 15. Groovy Tricks to Build DSL Make Use of ExpandoMetaClass 15
  16. 16. References http://groovy.codehaus.org http://docs.codehaus.org/display/GROOVY/Writing +Domain-Specific+Languages http://docs.codehaus.org/display/GROOVY/Gant http://www.easyb.org “Programming Groovy: Dynamic Productivity for the Java Developer,” by Venkat Subramaniam, Pragmatic Bookshelf, 2008. You can download examples and slides from http://www.agiledeveloper.com - download 16
  17. 17. Thank You! Please fill in your session evaluations You can download examples and slides from http://www.agiledeveloper.com - download 17
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×