application architecture in groovy

37

Upload: spring-io

Post on 08-May-2015

285 views

Category:

Technology


3 download

DESCRIPTION

Speaker: Daniel Woods Groovy provides flexible and dynamic capabilities for developing modular, maintainable code. With Groovy's extension framework, developers can modularize common application utility functions. Leveraging Groovy's dynamic nature can allow developers to create powerful, easy-to-follow business components. Employing Groovy categories and mixins can help localize and simplify transformation and adaptation logic that would otherwise be verbose and difficult to maintain. This talk will focus on leveraging the strengths and flexibilities in Groovy to employ a powerful, maintainable, and simple application architecture.

TRANSCRIPT

Page 1: Application Architecture in Groovy

 

Page 2: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ABOUT  ME  

@danveloper  github.com/danveloper  

[email protected]   Principal  Consultant  

Page 3: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

WHAT  IS  AN  ARCHITECT?  

WHAT  IS  ARCHITECTURE?  

Page 4: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ARCHITECTURE  IS  NOT  JUST  ABOUT  STRUCTURE  

Page 5: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ARCHITECTURE  IS  A  SET  OF  PRINCIPLES  TO  FOLLOW  

Page 6: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

ARCHITECTURE  SHOULD  BE  ADAPTABLE  &  EASY  TO  MAINTAIN  

Page 7: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

“ARCHITECT”  HAS  BECOME  A  BUZZ  WORD  

I’m  an  Architect!  

Page 8: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

“THE  BIG  PICTURE”  

Page 9: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

WHAT  MAKES  APPLICATION  ARCHITECTURE  IN  GROOVY  DIFFERENT?  

Page 10: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  IS  MORE  THAN  JUST  SYNTAX  SUGAR  

Page 11: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  IS  MORE  THAN  JUST  SYNTAX  SUGAR  

Page 12: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  “MAGIC”  IS  EVERYWHERE!  

Page 13: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

IDIOMATIC  GROOVY  CAN  BE  SCARY  

Page 14: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

“GOLDILOCKS  GROOVY”  NOT  TOO  GROOVY…  JUST  GROOVY  ENOUGH  

Page 15: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

PRINCIPLES  OF  APPLICATION  ARCHITECTURE  

Page 16: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

PREDICTABILITY  PATTERN:  TIGHTLY  COUPLE  FORM  AND  FUNCTION  

Page 17: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

THE  “FORM”  OF  A  RESOURCE    SHOULD  HINT  TO  ITS  “FUNCTION”  

Ü  LIKE GRAILS: “CONTROLLER”, “SERVICE”, “TAGLIB”!

 Ü  AVOID  NAMES  LIKE  DomainWizardBeanImpl!

Page 18: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

THE  “FUNCTION”  OF  A  RESOURCE    SHOULD  RESOLVE  ITS  “FORM”  

ü  Follow Single Responsibility Principle!

Page 19: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

MAKE  CODE  “MORE  READABLE”  

Page 20: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

EVERY  MINUTE  LOST  DECIPHERING…  IS  A  MINUTE  LOST  IMPLEMENTING  

Page 21: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BDD  FRAMEWORKS  AIM  FOR  “READABILITY”  

Page 22: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

IF  (ISUSINGGROOVY())  {  “USE  GROOVY!”()  }  

Page 23: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

SYNTAX  SUGAR  IS  A  GOOD  THING  

Page 24: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

CLOSURE  AS  FINAL  VARARG  IN  METHOD  

ü  Provides  “Scoped”  Execu(on  Environment    ü  Contains  code  to  enhance  readability  

ü  Programma(cally  determine  resolu(on    ü  Shortcut  otherwise  verbose  steps  

Page 25: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

MAPS  ARE  FIRST-­‐CLASS  CITIZENS  

ü  Map-­‐based  constructors  lend  code  to  self-­‐documenta(on    ü  Allow  explicit  named  assignments    ü  Ad-­‐hoc  data  structure  is  great  for  method  method  args    ü  Great  overall  reduc(on  of  code  verbosity  

Page 26: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

METHOD  MISSING  &  PROPERTY  MISSING  THE  “ALL  ELSE  FAILED”  HANDLERS  

Page 27: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

FLUENT,  HUMAN-­‐READABLE  DSLS  

ü  Dis(ll  reusable  complex  opera(ons  into  a  human-­‐readable  string    ü  Built-­‐in  self-­‐documenta(on  of  intent    ü  A  licle  capital  expense  to  facilitate  low  opera(ng  expense    ü  Great  developers  up  to  speed  very  quickly  

Page 28: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

FLUENT,  HUMAN-­‐READABLE  DSLS  

o  What  should  they  be  used?    o  Who  should  develop  the  DSL?  

Page 29: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BE  EXPLICIT  WITH  MAGIC  

Page 30: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

METACLASS  ENHANCEMENTS  CAN  COME  FROM…  

ü  Custom  MetaClasses    ü  Conven(on  MetaClasses  named:  

groovy.runtime.metaclass.[package].[class]MetaClass!  ü  Libraries  /  Plugins    ü  Anywhere  at  run(me!!  

Page 31: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BUILD  CONVENTION  AROUND    -­‐WHERE-­‐  

MAGIC  IS  COMING  FROM  

Page 32: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

BE  VERY  CLEAR  WHEN  OVERLOADING  OPERATORS    

(USE  A  CATEGORY)  

Page 33: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

USE  CATEGORIES  FOR  ONE-­‐OFF  MIXINS,    OR  CONCEPT-­‐BASED  OVERLOADS  

Page 34: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

FAVOR  CONVENTION  OVER  CONFIGURATION  

Page 35: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

GROOVY  ECOSYSTEM  EMBRACES  CONVENTION-­‐OVER-­‐CONFIGURATION  

Page 36: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

USE  CONVENTION-­‐OVER-­‐CONFIGURATION  TO  BUILD  AN  ADAPTIVE  DEVELOPMENT  ENVIRONMENT  

Page 37: Application Architecture in Groovy

Applica(on  Architecture  in  Groovy  

.ALL  DONE.    J  

QUESTIONS?