ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Tom Corcoran ¨C OSS Software - May 20091Get excited by coding again!Java History & the JVMGroovy genesis & it¡¯s relation to JavaInstalling GroovyLive demo to compare and contrast Groovy with Java codeGroovy	Typing	Object & Looping	Regular Expressions	Groovy Math	Goodies+++	Closures	MOP	MLVMGrails & GAE
Tom Corcoran ¨C OSS Software - May 20092JavaJavadeveloped by James Gosling released in 1995Java applications compiled to bytecode (.class files) that can run on any Java virtual machine (JVM) regardless of computer architectureVersion History1 (1995), 2(1998), 3(2000), 4(2002), 5(2004), 6(2006)Java 7 due Q1 2010: No closuresJVM->MLVM : the Java platform is changing GroovyJRuby (Ruby implementation)	ScalaClojure (Lisp dialect)Rhino (Javascript implementation)JavaFXScript (Sun¡¯s new baby)Jython (Python implementation)
Tom Corcoran ¨C OSS Software - May 20093GenesisFirst begun in 2004 by James Strachan, lost momentum, project reenergized by Guillaume Laforgewith v1 released in Jan 2007, currently at v1.6.3JSR 241: Groovy is an agile, dynamic programming language for the Java Virtual Machine. Groovy includes features found in Python, Ruby, and Smalltalk, but uses syntax similar to the Java programming languageLike Java, dynamically compiled to Java Virtual Machinebytecode (.class file)As a result seamless 2 way integration	with Java code and librariesDeployed as a jar (zip) file
Tom Corcoran ¨C OSS Software - May 20094Java++Java is a powerful language already, the goal was to add a new Swiss army knife to the Java developer tool belt, to have the agility and expressivenessof a dynamic languageGroovy is ¡°quite literally Java, but without the pain¡±Follows Java semantics, relaxed grammar, derived from java 5Any Java code will run as Groovy: Its superset-of-Java nature means that you can start with a Java file & change its suffix to 	¡°.groovy¡±, often Java developers end up with the 	gradual adoption route which is as designedGDK: extends the JDK (programming tools for Java)Groovyc in addition to javacGroovyDoc in addition to JavaDocMetaprogramming Can extend a program at runtime, including changing the structure of objects, types, and behaviour
Tom Corcoran ¨C OSS Software - May 20095InstallationDownload zip/windows installer & unpack/installSet GROOVY_HOME environment variable to unpacked locationAdd GROOVY_HOME/bin to your PATH environment variableSet your JAVA_HOME environment variable to point to your JDKGroovy ShellIn a command shell type groovyshRun Groovy codegroovyMyCode.groovyGroovy ConsoleTo run Swing interactive console type GroovyConsole
Tom Corcoran ¨C OSS Software - May 20096GroovyBean
Tom Corcoran ¨C OSS Software - May 20097Increase readabilityThis GroovyBean gives the same result with less code noiseThis also illustrates a recurring theme in Groovy: 	Make common coding conventions simpledef think of defas an alias of "Object"
 must have def / type name
 defindicates that you don't care about the typesemi colon optional
Tom Corcoran ¨C OSS Software - May 20098TypingGroovy is optionally typed and the Groovy compiler, groovyc, does not perform full type checkingassigning a string to an integer compiles fine, when you try to run you will receive a GroovyCastException exceptionif you call a method that does not exist, you will not get any compilation error, you will get a MissingMethodException at runtimeRule of thumb: use static typing if interfacing with	static language code
Tom Corcoran ¨C OSS Software - May 20099Objects & LoopingEverything is an object in GroovyJava mixes primitive Boolean type and the numeric types - byte, short, int, long, and char, float and double and reference (object) types class types, interface types, and array typesString literals are represented by String objectsLoopingmapA map is a mapping from unique unordered keys to valuesassertProvide expression that you are asserting will be true, otherwise throws AssertionErrornew reserved word
Tom Corcoran ¨C OSS Software - May 200910Regular ExpressionsGroovy uses the Java regular expression engine but adds some native support sugar~"pattern" expression, which creates a Java Pattern object=~ expressions, which creates a Java Matcher objectSlashy strings, can help with escaping
Tom Corcoran ¨C OSS Software - May 200911Groovy MathGroovy uses exact, or decimal math for default calculationsThis means that user computations like:	1.1 + 0.1 == 1.2	will return true rather than false (using float or double types 	in Java returns a result of 1.2000000000000002)To achieve this groovy literals with decimal points are instantiated as java.math.BigDecimal types rather than binary floating point types (Float, Double)Some financial users are big fans of how it does Math and I have heard of one where the actuaries are able to code in it too and do as wellhttp://groovy.codehaus.org/Groovy+Math
Tom Corcoran ¨C OSS Software - May 200912GoodiesGroovy TruthGroovy provides parsers & slurpers for working with XMLUse XmlSlurper to slurp up a xml file
Tom Corcoran ¨C OSS Software - May 200913Goodies+Optional parametersto achieve this in Java you have you have to overload methodTrailing array parameter is optionalImplementing interfacesMethod parameters optional
Tom Corcoran ¨C OSS Software - May 200914Goodies++Safe dereferencingElvis operator is a shortening of Java's ternary operatoryou will still notice the repetition of the name variable, which would violate the DRY principle (Don't Repeat Yourself)
Tom Corcoran ¨C OSS Software - May 200915ClosuresClosures are pieces of code that can augment, refine or enhance another piece of codeClosures can be passed to methodsGDK Examples
Tom Corcoran ¨C OSS Software - May 200916MOPFor each Java class and for each Groovy instance, there is an associated meta-class which represents this runtime behavior of your objectsa groovier kind of meta-class is available: the expando meta-classyou can check that a certain method or property is available
Tom Corcoran ¨C OSS Software - May 200917MLVMnot a silver bullet...Doing at run-time what other languages do at compile time raise the concern of speed of dynamic languagesDynamic languages such as Groovy/JRuby are up to 10 times	slower on micro benchmarks due to heavy reflection use, this 	does not mean overall speed translates to that ratiothe Da Vinci Machine ProjectSun project to prototype the extension of the JVM to add	support for dynamic languagesSpecification process JSR-292: Supporting Dynamically Typed Languagesadd a new bytecode, invokedynamic, to bring dynamic	language speed closer to 2/3 times of Javamay be included in Java 7http://openjdk.java.net/projects/mlvm/
Tom Corcoran ¨C OSS Software - May 200918Grails & GAEAs of 14 May 2009 Grails v1.1.1 now supports the Google Application Engine (GAE)GORM had to have wrapper for GAE¡¯s datastore GQLUp to now to Hosting a grails war was about $20 a month Now free hosting of application with 500 MB of persistent storage and enough CPU and bandwidth for about 5 million page views a monthhttp://myapplication.appspot.com

More Related Content

What's hot (20)

Go language presentation
Go language presentationGo language presentation
Go language presentation
paramisoft
?
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
?
Using Entity Framework's New POCO Features: Part 1, by Julie Lerman
Using Entity Framework's New POCO Features: Part 1, by Julie LermanUsing Entity Framework's New POCO Features: Part 1, by Julie Lerman
Using Entity Framework's New POCO Features: Part 1, by Julie Lerman
Julie Lerman
?
Go lang
Go langGo lang
Go lang
Suelen Carvalho
?
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
Amal Mohan N
?
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
Ganesh Samarthyam
?
Go Programming language, golang
Go Programming language, golangGo Programming language, golang
Go Programming language, golang
Basil N G
?
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
John Potocny
?
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
?
Introduction to Go-Lang
Introduction to Go-LangIntroduction to Go-Lang
Introduction to Go-Lang
Folio3 Software
?
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
poojakpatel52
?
Go Lang
Go LangGo Lang
Go Lang
Venkata Naga Ravi
?
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) Language
Aniruddha Chakrabarti
?
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
Mickael Istria
?
Pyconsg2014 pyston
Pyconsg2014 pystonPyconsg2014 pyston
Pyconsg2014 pyston
masahitojp
?
Golang presentaion-2018-07-26
Golang presentaion-2018-07-26Golang presentaion-2018-07-26
Golang presentaion-2018-07-26
Shintaro Ikeda
?
Having Fun with Kotlin Android - DILo Surabaya
Having Fun with Kotlin Android - DILo SurabayaHaving Fun with Kotlin Android - DILo Surabaya
Having Fun with Kotlin Android - DILo Surabaya
DILo Surabaya
?
ƽÐл¯ÄãµÄ¹¤×÷ part1
ƽÐл¯ÄãµÄ¹¤×÷ part1ƽÐл¯ÄãµÄ¹¤×÷ part1
ƽÐл¯ÄãµÄ¹¤×÷ part1
Shuen-Huei Guan
?
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
EvoletTechnologiesCo
?
Google Go! language
Google Go! languageGoogle Go! language
Google Go! language
Andr¨¦ Mayer
?
Go language presentation
Go language presentationGo language presentation
Go language presentation
paramisoft
?
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
?
Using Entity Framework's New POCO Features: Part 1, by Julie Lerman
Using Entity Framework's New POCO Features: Part 1, by Julie LermanUsing Entity Framework's New POCO Features: Part 1, by Julie Lerman
Using Entity Framework's New POCO Features: Part 1, by Julie Lerman
Julie Lerman
?
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
Amal Mohan N
?
A First Look at Google's Go Programming Language
A First Look at Google's Go Programming LanguageA First Look at Google's Go Programming Language
A First Look at Google's Go Programming Language
Ganesh Samarthyam
?
Go Programming language, golang
Go Programming language, golangGo Programming language, golang
Go Programming language, golang
Basil N G
?
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming LanguageATO 2014 - So You Think You Know 'Go'? The Go Programming Language
ATO 2014 - So You Think You Know 'Go'? The Go Programming Language
John Potocny
?
The Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventureThe Go programming language - Intro by MyLittleAdventure
The Go programming language - Intro by MyLittleAdventure
mylittleadventure
?
Golang - Overview of Go (golang) Language
Golang - Overview of Go (golang) LanguageGolang - Overview of Go (golang) Language
Golang - Overview of Go (golang) Language
Aniruddha Chakrabarti
?
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
Mickael Istria
?
Pyconsg2014 pyston
Pyconsg2014 pystonPyconsg2014 pyston
Pyconsg2014 pyston
masahitojp
?
Golang presentaion-2018-07-26
Golang presentaion-2018-07-26Golang presentaion-2018-07-26
Golang presentaion-2018-07-26
Shintaro Ikeda
?
Having Fun with Kotlin Android - DILo Surabaya
Having Fun with Kotlin Android - DILo SurabayaHaving Fun with Kotlin Android - DILo Surabaya
Having Fun with Kotlin Android - DILo Surabaya
DILo Surabaya
?
ƽÐл¯ÄãµÄ¹¤×÷ part1
ƽÐл¯ÄãµÄ¹¤×÷ part1ƽÐл¯ÄãµÄ¹¤×÷ part1
ƽÐл¯ÄãµÄ¹¤×÷ part1
Shuen-Huei Guan
?
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
EvoletTechnologiesCo
?

Similar to Groovy (20)

Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
mzgubin
?
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
mzgubin
?
What's New in Groovy 1.6?
What's New in Groovy 1.6?What's New in Groovy 1.6?
What's New in Groovy 1.6?
Guillaume Laforge
?
JavaOne2015-What's in an Object?
JavaOne2015-What's in an Object?JavaOne2015-What's in an Object?
JavaOne2015-What's in an Object?
Charlie Gracie
?
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
Charlie Gracie
?
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
Orest Ivasiv
?
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
Michael Yan
?
Whats New In Groovy 1.6?
Whats New In Groovy 1.6?Whats New In Groovy 1.6?
Whats New In Groovy 1.6?
Guillaume Laforge
?
Golang
GolangGolang
Golang
Saray Chak
?
Groovy And Grails
Groovy And GrailsGroovy And Grails
Groovy And Grails
William Grosso
?
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive MetaprogrammingFeelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Matt Stine
?
GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28
Jorge Hidalgo
?
Startup groovysession1
Startup groovysession1Startup groovysession1
Startup groovysession1
kyon mm
?
Introduction to Go ProgrammingLanguage.ppt
Introduction to Go ProgrammingLanguage.pptIntroduction to Go ProgrammingLanguage.ppt
Introduction to Go ProgrammingLanguage.ppt
PedroAlexandre215482
?
BP203 limitless languages
BP203 limitless languagesBP203 limitless languages
BP203 limitless languages
Mark Myers
?
Groovy intro
Groovy introGroovy intro
Groovy intro
NexThoughts Technologies
?
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
elliando dias
?
Griffon - Making Swing Fun Again
Griffon - Making Swing Fun AgainGriffon - Making Swing Fun Again
Griffon - Making Swing Fun Again
Danno Ferrin
?
Dsl? ??? groovy
Dsl? ??? groovyDsl? ??? groovy
Dsl? ??? groovy
Seeyoung Chang
?
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovJava 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Svetlin Nakov
?
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
mzgubin
?
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
mzgubin
?
JavaOne2015-What's in an Object?
JavaOne2015-What's in an Object?JavaOne2015-What's in an Object?
JavaOne2015-What's in an Object?
Charlie Gracie
?
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
Charlie Gracie
?
Why don't you Groovy?
Why don't you Groovy?Why don't you Groovy?
Why don't you Groovy?
Orest Ivasiv
?
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive MetaprogrammingFeelin' Groovy: An Afternoon of Reflexive Metaprogramming
Feelin' Groovy: An Afternoon of Reflexive Metaprogramming
Matt Stine
?
GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28GraalVM - JBCNConf 2019-05-28
GraalVM - JBCNConf 2019-05-28
Jorge Hidalgo
?
Startup groovysession1
Startup groovysession1Startup groovysession1
Startup groovysession1
kyon mm
?
Introduction to Go ProgrammingLanguage.ppt
Introduction to Go ProgrammingLanguage.pptIntroduction to Go ProgrammingLanguage.ppt
Introduction to Go ProgrammingLanguage.ppt
PedroAlexandre215482
?
BP203 limitless languages
BP203 limitless languagesBP203 limitless languages
BP203 limitless languages
Mark Myers
?
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
elliando dias
?
Griffon - Making Swing Fun Again
Griffon - Making Swing Fun AgainGriffon - Making Swing Fun Again
Griffon - Making Swing Fun Again
Danno Ferrin
?
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin NakovJava 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Java 7 - New Features - by Mihail Stoynov and Svetlin Nakov
Svetlin Nakov
?

Groovy

  • 1. Tom Corcoran ¨C OSS Software - May 20091Get excited by coding again!Java History & the JVMGroovy genesis & it¡¯s relation to JavaInstalling GroovyLive demo to compare and contrast Groovy with Java codeGroovy Typing Object & Looping Regular Expressions Groovy Math Goodies+++ Closures MOP MLVMGrails & GAE
  • 2. Tom Corcoran ¨C OSS Software - May 20092JavaJavadeveloped by James Gosling released in 1995Java applications compiled to bytecode (.class files) that can run on any Java virtual machine (JVM) regardless of computer architectureVersion History1 (1995), 2(1998), 3(2000), 4(2002), 5(2004), 6(2006)Java 7 due Q1 2010: No closuresJVM->MLVM : the Java platform is changing GroovyJRuby (Ruby implementation) ScalaClojure (Lisp dialect)Rhino (Javascript implementation)JavaFXScript (Sun¡¯s new baby)Jython (Python implementation)
  • 3. Tom Corcoran ¨C OSS Software - May 20093GenesisFirst begun in 2004 by James Strachan, lost momentum, project reenergized by Guillaume Laforgewith v1 released in Jan 2007, currently at v1.6.3JSR 241: Groovy is an agile, dynamic programming language for the Java Virtual Machine. Groovy includes features found in Python, Ruby, and Smalltalk, but uses syntax similar to the Java programming languageLike Java, dynamically compiled to Java Virtual Machinebytecode (.class file)As a result seamless 2 way integration with Java code and librariesDeployed as a jar (zip) file
  • 4. Tom Corcoran ¨C OSS Software - May 20094Java++Java is a powerful language already, the goal was to add a new Swiss army knife to the Java developer tool belt, to have the agility and expressivenessof a dynamic languageGroovy is ¡°quite literally Java, but without the pain¡±Follows Java semantics, relaxed grammar, derived from java 5Any Java code will run as Groovy: Its superset-of-Java nature means that you can start with a Java file & change its suffix to ¡°.groovy¡±, often Java developers end up with the gradual adoption route which is as designedGDK: extends the JDK (programming tools for Java)Groovyc in addition to javacGroovyDoc in addition to JavaDocMetaprogramming Can extend a program at runtime, including changing the structure of objects, types, and behaviour
  • 5. Tom Corcoran ¨C OSS Software - May 20095InstallationDownload zip/windows installer & unpack/installSet GROOVY_HOME environment variable to unpacked locationAdd GROOVY_HOME/bin to your PATH environment variableSet your JAVA_HOME environment variable to point to your JDKGroovy ShellIn a command shell type groovyshRun Groovy codegroovyMyCode.groovyGroovy ConsoleTo run Swing interactive console type GroovyConsole
  • 6. Tom Corcoran ¨C OSS Software - May 20096GroovyBean
  • 7. Tom Corcoran ¨C OSS Software - May 20097Increase readabilityThis GroovyBean gives the same result with less code noiseThis also illustrates a recurring theme in Groovy: Make common coding conventions simpledef think of defas an alias of "Object"
  • 8. must have def / type name
  • 9. defindicates that you don't care about the typesemi colon optional
  • 10. Tom Corcoran ¨C OSS Software - May 20098TypingGroovy is optionally typed and the Groovy compiler, groovyc, does not perform full type checkingassigning a string to an integer compiles fine, when you try to run you will receive a GroovyCastException exceptionif you call a method that does not exist, you will not get any compilation error, you will get a MissingMethodException at runtimeRule of thumb: use static typing if interfacing with static language code
  • 11. Tom Corcoran ¨C OSS Software - May 20099Objects & LoopingEverything is an object in GroovyJava mixes primitive Boolean type and the numeric types - byte, short, int, long, and char, float and double and reference (object) types class types, interface types, and array typesString literals are represented by String objectsLoopingmapA map is a mapping from unique unordered keys to valuesassertProvide expression that you are asserting will be true, otherwise throws AssertionErrornew reserved word
  • 12. Tom Corcoran ¨C OSS Software - May 200910Regular ExpressionsGroovy uses the Java regular expression engine but adds some native support sugar~"pattern" expression, which creates a Java Pattern object=~ expressions, which creates a Java Matcher objectSlashy strings, can help with escaping
  • 13. Tom Corcoran ¨C OSS Software - May 200911Groovy MathGroovy uses exact, or decimal math for default calculationsThis means that user computations like: 1.1 + 0.1 == 1.2 will return true rather than false (using float or double types in Java returns a result of 1.2000000000000002)To achieve this groovy literals with decimal points are instantiated as java.math.BigDecimal types rather than binary floating point types (Float, Double)Some financial users are big fans of how it does Math and I have heard of one where the actuaries are able to code in it too and do as wellhttp://groovy.codehaus.org/Groovy+Math
  • 14. Tom Corcoran ¨C OSS Software - May 200912GoodiesGroovy TruthGroovy provides parsers & slurpers for working with XMLUse XmlSlurper to slurp up a xml file
  • 15. Tom Corcoran ¨C OSS Software - May 200913Goodies+Optional parametersto achieve this in Java you have you have to overload methodTrailing array parameter is optionalImplementing interfacesMethod parameters optional
  • 16. Tom Corcoran ¨C OSS Software - May 200914Goodies++Safe dereferencingElvis operator is a shortening of Java's ternary operatoryou will still notice the repetition of the name variable, which would violate the DRY principle (Don't Repeat Yourself)
  • 17. Tom Corcoran ¨C OSS Software - May 200915ClosuresClosures are pieces of code that can augment, refine or enhance another piece of codeClosures can be passed to methodsGDK Examples
  • 18. Tom Corcoran ¨C OSS Software - May 200916MOPFor each Java class and for each Groovy instance, there is an associated meta-class which represents this runtime behavior of your objectsa groovier kind of meta-class is available: the expando meta-classyou can check that a certain method or property is available
  • 19. Tom Corcoran ¨C OSS Software - May 200917MLVMnot a silver bullet...Doing at run-time what other languages do at compile time raise the concern of speed of dynamic languagesDynamic languages such as Groovy/JRuby are up to 10 times slower on micro benchmarks due to heavy reflection use, this does not mean overall speed translates to that ratiothe Da Vinci Machine ProjectSun project to prototype the extension of the JVM to add support for dynamic languagesSpecification process JSR-292: Supporting Dynamically Typed Languagesadd a new bytecode, invokedynamic, to bring dynamic language speed closer to 2/3 times of Javamay be included in Java 7http://openjdk.java.net/projects/mlvm/
  • 20. Tom Corcoran ¨C OSS Software - May 200918Grails & GAEAs of 14 May 2009 Grails v1.1.1 now supports the Google Application Engine (GAE)GORM had to have wrapper for GAE¡¯s datastore GQLUp to now to Hosting a grails war was about $20 a month Now free hosting of application with 500 MB of persistent storage and enough CPU and bandwidth for about 5 million page views a monthhttp://myapplication.appspot.com
  • 21. Tom Corcoran ¨C OSS Software - May 200919ResourcesGroovy http://groovy.codehaus.org Programming Groovy : VenkatSubramaniam Groovy Recipes: Scott Davis Grails http://www.grails.orgThe Definitive Guide to Grails: Graeme Rocher Grails in Action: Glen Smith & Peter Ledbrook
  • 22. Tom Corcoran ¨C OSS Software - May 200920The EndComments http://joind.in/event/view/46Local Groovy User Group? http://gugse.com