SlideShare uma empresa Scribd logo
1 de 88
Grails & Groovy
 introducing Grails TV
                    Take the tour
To do
        A little about myself
        Grails TV
        Groovy
        Grails
        grails create-app
To do
        A little about myself
        Grails TV
        Groovy
        Grails
        grails create-app
To do
        A little about myself
        Grails TV
        Groovy
        Grails
        grails create-app
To do
        A little about myself
        Grails TV
        Groovy
        Grails
        grails create-app
To do
        A little about myself
        Grails TV
        Groovy
        Grails
        grails create-app
Fast Food Friday
http://www.ihenk.com




            @henkjurriens


henk.jurriens@gmail.com
01 1?
  LL 2
FA
Groovy
package com.groovy.home;


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class TestFile {public static void main(String[] args)
{
        BufferedReader br=null;
        try{
                  br=new BufferedReader(new FileReader("test.txt"));
                  String line=null;
                  while((line=br.readLine())!=null){
                      System.out.println(line);
                  }
              }
        catch(FileNotFoundException e){
               e.printStackTrace();
              }
           catch(IOException e)
          {
           e.printStackTrace();
          }
    }
}
new File("test.txt").eachLine{
     line -> println line
}
Closures
def x = 2
def c = {
     numberToSquare -> numberToSquare *
     numberToSquere
}
def y = c(x)
Collections
Lists

def list = [ 5, 6, 7, 8 ]
list.each{
    println it
}
Maps

def map = [ name: “henk” , likes : “cheese” ]


assert map.get(“name”) == “henk”
•   find
•   findAll
•   sort
•   sum
other
features
Dynamic Methods
class Dog {
  def bark() { println "woof!" }
  def sit() { println "(sitting)" }
  def jump() { println "boing!" }
}

def doAction( animal, action ) {      Dynamic Methods
  animal."$action"()
}

def rex = new Dog()

doAction( rex, "bark" )
XMLBuilders
def builder = new
groovy.xml.MarkupBuilder()

builder.'web-app' {                      XMLBuilders
   'display-name' 'My Web Application'
}
Convention over Configuration
Simplify the life of
   developers
=
=
=
+
=
+
=
+
+
=
+
+
Spring
Spring
Hibernate
Spring
Hibernate
SiteMesh
Spring
Hibernate
SiteMesh
Tomcat
Grails Stack




  Java Virtual Machine
Grails Stack



Java Language


                Java Virtual Machine
Grails Stack



                       Java Development Kit
Java Language
                               (JDK)


                Java Virtual Machine
Grails Stack

Java Enterprise
  Edition (JEE)


                             Java Development Kit
      Java Language
                                     (JDK)


                      Java Virtual Machine
Grails Stack

Java Enterprise
                  Spring
  Edition (JEE)


                             Java Development Kit
      Java Language
                                     (JDK)


                      Java Virtual Machine
Grails Stack

Java Enterprise
                  Spring    Hibernate
  Edition (JEE)


                             Java Development Kit
      Java Language
                                     (JDK)


                      Java Virtual Machine
Grails Stack

Java Enterprise
                  Spring    Hibernate        SiteMesh
  Edition (JEE)


                             Java Development Kit
      Java Language
                                     (JDK)


                      Java Virtual Machine
Grails Stack

Java Enterprise
                  Spring    Hibernate        SiteMesh   Groovy
  Edition (JEE)


                             Java Development Kit
      Java Language
                                     (JDK)


                      Java Virtual Machine
Grails Stack
                      Grails


Java Enterprise
                  Spring    Hibernate        SiteMesh   Groovy
  Edition (JEE)


                               Java Development Kit
      Java Language
                                       (JDK)


                      Java Virtual Machine
grails create-app gtv
grails-app

       domain

       controllers

       views

       services

       taglib

        i18n
Wait!
Wait!
Configuration files?
Wait!
   Configuration files?
no database to configure?
Wait!
   Configuration files?
no database to configure?
 no app server to install?
Models
class Movie {

    
   String title
    
   String description
    
   String image
    
   Integer rating
    
   String movie

}
static constraints = {
   title(blank:false)
   description(size:10..200)
   rating(min:1, max:5)
}
• blank   • inList
• email   • nullable
• url     • min
• range   • scale
GORM
• Movie.count()   • Movie.save()
• Movie.list()    • Movie.delete()
• Movie.get(id)   • etc
Querying
• find        • countBy
• findAllBy   • list
• count      • listOrderby
def m = Movie.findByTitle(‘Star trek’)

m = Movie.findByRating(4)
m = Movie.
     findByReleaseDateBetween(..,..)
Controllers
http://srvr:8080/app/controller/action
Movie.properties = params
Views
Groovy Server Pages
Groovy Server Pages
   Grails Tag Libs
Groovy Server Pages
    Grails Tag Libs
Templates, URL mapping
<g:render template="menu"/>

<g:each in="${content}" var="item">

<g:link action="detail" id="${item.id}" >
          </g:link>
    <h2>${item.title}</h2>

</g:each>
Plugins
> 500 plugins
> 500 plugins
  Security &
authentication
> 500 plugins
  Security &
authentication

                 Scheduling
> 500 plugins
  Security &
authentication                jQuery

                 Scheduling
> 500 plugins
  Security &
authentication                jQuery

                 Scheduling

           Google App Engine
> 500 plugins
  Security &
authentication                jQuery

                 Scheduling            CouchDB
           Google App Engine
Let’s build GTV!
http://www.grails.org

http://groovy.codehaus.org/

Mais conteúdo relacionado

Mais procurados

Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
Igor Khotin
 
Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud
Shekhar Gulati
 

Mais procurados (20)

Hands on the Gradle
Hands on the GradleHands on the Gradle
Hands on the Gradle
 
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
 
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
 
What's new in Java EE 6
What's new in Java EE 6What's new in Java EE 6
What's new in Java EE 6
 
Gradle - time for a new build
Gradle - time for a new buildGradle - time for a new build
Gradle - time for a new build
 
The Ring programming language version 1.3 book - Part 8 of 88
The Ring programming language version 1.3 book - Part 8 of 88The Ring programming language version 1.3 book - Part 8 of 88
The Ring programming language version 1.3 book - Part 8 of 88
 
Taking Jenkins Pipeline to the Extreme
Taking Jenkins Pipeline to the ExtremeTaking Jenkins Pipeline to the Extreme
Taking Jenkins Pipeline to the Extreme
 
Gradle
GradleGradle
Gradle
 
Gradle - time for another build
Gradle - time for another buildGradle - time for another build
Gradle - time for another build
 
Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010Gradle talk, Javarsovia 2010
Gradle talk, Javarsovia 2010
 
Javascript TDD with Jasmine, Karma, and Gulp
Javascript TDD with Jasmine, Karma, and GulpJavascript TDD with Jasmine, Karma, and Gulp
Javascript TDD with Jasmine, Karma, and Gulp
 
Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud
 
Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to MissJava Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss
 
Gradle,the new build system for android
Gradle,the new build system for androidGradle,the new build system for android
Gradle,the new build system for android
 
Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss
 
Custom deployments with sbt-native-packager
Custom deployments with sbt-native-packagerCustom deployments with sbt-native-packager
Custom deployments with sbt-native-packager
 
Android Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyondAndroid Jetpack + Coroutines: To infinity and beyond
Android Jetpack + Coroutines: To infinity and beyond
 
Ship your Scala code often and easy with Docker
Ship your Scala code often and easy with DockerShip your Scala code often and easy with Docker
Ship your Scala code often and easy with Docker
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Automated acceptance test
Automated acceptance testAutomated acceptance test
Automated acceptance test
 

Destaque (8)

IDMI | Profile
IDMI | ProfileIDMI | Profile
IDMI | Profile
 
Nioc
NiocNioc
Nioc
 
Cr
CrCr
Cr
 
HTML5, makkelijker kunnen we het niet maken!
HTML5, makkelijker kunnen we het niet maken!HTML5, makkelijker kunnen we het niet maken!
HTML5, makkelijker kunnen we het niet maken!
 
Chia E Giulss
Chia E GiulssChia E Giulss
Chia E Giulss
 
Trivento Summercamp : Reactive with AngularJS & TypeSafe
Trivento Summercamp : Reactive with AngularJS & TypeSafeTrivento Summercamp : Reactive with AngularJS & TypeSafe
Trivento Summercamp : Reactive with AngularJS & TypeSafe
 
Nioc
NiocNioc
Nioc
 
IDMI Digital Marketing BootCamp| Course
IDMI Digital Marketing BootCamp| CourseIDMI Digital Marketing BootCamp| Course
IDMI Digital Marketing BootCamp| Course
 

Semelhante a Grails TV : an introduction into Grails & Groovy

Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejug
robbiev
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010
Andres Almiray
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
Fred Sauer
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
Andy Peterson
 

Semelhante a Grails TV : an introduction into Grails & Groovy (20)

Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App Engine
 
Scripting Oracle Develop 2007
Scripting Oracle Develop 2007Scripting Oracle Develop 2007
Scripting Oracle Develop 2007
 
Jet presentation
Jet presentationJet presentation
Jet presentation
 
Griffon - Making Swing Fun Again
Griffon - Making Swing Fun AgainGriffon - Making Swing Fun Again
Griffon - Making Swing Fun Again
 
Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments
 
Eric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build systemEric Lafortune - The Jack and Jill build system
Eric Lafortune - The Jack and Jill build system
 
Groovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applicationsGroovy - Grails as a modern scripting language for Web applications
Groovy - Grails as a modern scripting language for Web applications
 
Java Code Generation for Productivity
Java Code Generation for ProductivityJava Code Generation for Productivity
Java Code Generation for Productivity
 
Js tacktalk team dev js testing performance
Js tacktalk team dev js testing performanceJs tacktalk team dev js testing performance
Js tacktalk team dev js testing performance
 
Java Starting
Java StartingJava Starting
Java Starting
 
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovygreach 2014 marco vermeulen bdd using cucumber jvm and groovy
greach 2014 marco vermeulen bdd using cucumber jvm and groovy
 
Django on Jython, PyCon 2009
Django on Jython, PyCon 2009Django on Jython, PyCon 2009
Django on Jython, PyCon 2009
 
Enterprise Guice 20090217 Bejug
Enterprise Guice 20090217 BejugEnterprise Guice 20090217 Bejug
Enterprise Guice 20090217 Bejug
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010
 
Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)
 
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?
 
Google App Engine With Java And Groovy
Google App Engine With Java And GroovyGoogle App Engine With Java And Groovy
Google App Engine With Java And Groovy
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
SF JUG - GWT Can Help You Create Amazing Apps - 2009-10-13
 
Javascript unit testing, yes we can e big
Javascript unit testing, yes we can   e bigJavascript unit testing, yes we can   e big
Javascript unit testing, yes we can e big
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Grails TV : an introduction into Grails & Groovy

Notas do Editor

  1. Hello everybody, today I&amp;#x2019;m to going explain Grails &amp; Groovy by introducing Grails\n\n\n
  2. What are we&amp;#x2019;re doing to this afternoon?\n\n- First a little bit about myself\n\n- Grails TV, what is exactly Grails TV?\n\n- introduction into Groovy\n\n- and an introduction into Grails\n\n- and finally we&amp;#x2019;re going to create an app!\n\n
  3. What are we&amp;#x2019;re doing to this afternoon?\n\n- First a little bit about myself\n\n- Grails TV, what is exactly Grails TV?\n\n- introduction into Groovy\n\n- and an introduction into Grails\n\n- and finally we&amp;#x2019;re going to create an app!\n\n
  4. What are we&amp;#x2019;re doing to this afternoon?\n\n- First a little bit about myself\n\n- Grails TV, what is exactly Grails TV?\n\n- introduction into Groovy\n\n- and an introduction into Grails\n\n- and finally we&amp;#x2019;re going to create an app!\n\n
  5. What are we&amp;#x2019;re doing to this afternoon?\n\n- First a little bit about myself\n\n- Grails TV, what is exactly Grails TV?\n\n- introduction into Groovy\n\n- and an introduction into Grails\n\n- and finally we&amp;#x2019;re going to create an app!\n\n
  6. \n\nIt started all with this Commodore VIC-20 back in the 80&amp;#x2019;s.. Started hacking some small programs...and I learned different programming languages : Basic, Pascal, Modula, Delphi, Java...and in the end Groovy &amp; Grails\n\n
  7. My first project with Grails &amp; Groovy : Fast Food Friday. The company I work for, we have a Fast Food Friday\nBut ordering the food was always a problem! So this was a great oppertunity to create my first Grails application : Fast Food Manager (or in dutch Vettebek Manager)\n
  8. The last two years, I&amp;#x2019;m also giving presentation about Grails &amp; Groovy.. Last year I started HTML5 User Group, organized a HTML5 Hackathon, and HTML5 workshop for scholers!\n
  9. The last two years, I&amp;#x2019;m also giving presentation about Grails &amp; Groovy.. Last year I started HTML5 User Group, organized a HTML5 Hackathon, and HTML5 workshop for scholers!\n
  10. \n
  11. Google TV .... a new experience that combines TV, the entire web, and apps...very cool... introduced last year\nbut when will it arrive?\n\ni\n
  12. So... let&amp;#x2019;s not wait for Google ... just create it do day!\n\nLet&amp;#x2019;s build it with GRAILS... Grails is a dynamic web framework based on the language Groovy\n\nSo first we dive into Groovy.\n\n
  13. Groovy is a popular dynamic language for the Java Virtual Machine. It&amp;#x2019;s inspired by languages like Python, Ruby and Smalltalk.\n\nIt makes modern programming features available to Java developers. \nFeatures like closures, dynamic methods. It supports Domain Specifice Languages and it simplifies testing.\n
  14. Is there someone who can read this slide? Doesn&amp;#x2019;t matter.. \n\nAll this code is needed for reading a file and output it line by line\n\nThere is a better solution:\n
  15. In Groovy all you need is this\n
  16. Every modern language nowadays has the construct of a closure, like Javascript, Scala, Python.etc... but not Java... and it will be question if it ever will come..\n\nBut a closure is very neat\n
  17. A closure is just a block of code .\n\n\n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. class Dog {\n def bark() { println &quot;woof!&quot; }\n def sit() { println &quot;(sitting)&quot; }\n def jump() { println &quot;boing!&quot; }\n}\n\ndef doAction( animal, action ) {\n animal.&quot;$action&quot;() //action name is passed at invocation\n}\n\ndef rex = new Dog()\n\ndoAction( rex, &quot;bark&quot; ) //prints &apos;woof!&apos;\ndoAction( rex, &quot;jump&quot; ) //prints &apos;boing!&apos;\n\n\ndef builder = new groovy.xml.MarkupBuilder()\nbuilder.&apos;web-app&apos; {\n &apos;display-name&apos; &apos;My Web Application&apos;\n}\n\n
  24. class Dog {\n def bark() { println &quot;woof!&quot; }\n def sit() { println &quot;(sitting)&quot; }\n def jump() { println &quot;boing!&quot; }\n}\n\ndef doAction( animal, action ) {\n animal.&quot;$action&quot;() //action name is passed at invocation\n}\n\ndef rex = new Dog()\n\ndoAction( rex, &quot;bark&quot; ) //prints &apos;woof!&apos;\ndoAction( rex, &quot;jump&quot; ) //prints &apos;boing!&apos;\n\n\ndef builder = new groovy.xml.MarkupBuilder()\nbuilder.&apos;web-app&apos; {\n &apos;display-name&apos; &apos;My Web Application&apos;\n}\n\n
  25. Grails is a next-generation Java web development framework that generates great developer productivity gains through the confluence of a dynamic language\n
  26. 2005 Ruby on Rails is all the rage these days, but compromise on your past investment..\n\n\nCan&amp;#x2019;t we leverage Groovy and proven technologies like Spring and Hibernate to bring the &amp;#x201C;Convention over Configuration&amp;#x201D; paradigm on the Java platform, without compromising on your investment?&amp;#x201D;\n\nConvention over Configuration\nScaffolding\nCode Templates\neasy database configuration\n
  27. but the main goal : simplify the life of developers\n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. Spring : IoC, DI, Spring MVC, Spring Webflow\nHibernate : Object-Relational Mapping\nTomcat : application server\n\n
  35. Spring : IoC, DI, Spring MVC, Spring Webflow\nHibernate : Object-Relational Mapping\nTomcat : application server\n\n
  36. Spring : IoC, DI, Spring MVC, Spring Webflow\nHibernate : Object-Relational Mapping\nTomcat : application server\n\n
  37. Spring : IoC, DI, Spring MVC, Spring Webflow\nHibernate : Object-Relational Mapping\nTomcat : application server\n\n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. Known as domain classes in Grails, represent the problem domain\n
  52. \n
  53. \n
  54. \n
  55. your domain model is a set of POGO&amp;#x2019;s\n\nyour domain class are transparentely mapped to the datase\n\nHibernate under the hood\n
  56. \n
  57. \n
  58. \n
  59. \n
  60. control request flow, interact with models and delegate to views\n
  61. - controllers return a Map as models for the view to render\n\n- easy databinding from from fields\n
  62. - controllers return a Maps as models for the view to render\n\n- easy databinding from from fields\n
  63. are defined in Groovy Server Pages to render the model\n
  64. \n
  65. \n
  66. \n
  67. - controllers return a Maps as models for the view to render\n\n- easy databinding from from fields\n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n