SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Can You tell me how to get to Sesame Street?
I wanna be a Grails rookie star there!
Fernando Redondo RamírezFernando Redondo Ramírez
@@pronoide_ferpronoide_fer
RoadmapRoadmap
• About me
• A brief introduction…
• Hands on!• Hands on!
AboutAbout MeMe
• Entrepreneur and Business Manager at Pronoide
since 2003
• Java & Friends Trainer (JEE, Spring, Groovy, Maven, Jenkins, Sonar,
Weblogic, Jboss, Websphere, Disco dancing and so )
• Doing things with Java from 1999 on
• Computer Engineer
• Happily married and proud father of two children who• Happily married and proud father of two children who
love all Sesame Street stuff
AA briefbrief introductionintroduction
- Just another Grails speech (jags)?
- Yes indeed!, but:
• We’ll build it all from scratch
• We’ll leverage Grails 2.3
• We’re going to do a lot of tests
• We’ll deal with the whole app• We’ll deal with the whole app
code
• We won’t use Scaffolding ;)
• No plugins are necessary
AA briefbrief introductionintroduction
- But, What is Grails?
- Grails isn’t only another web
development framework, but it’s
a full web development platform:
• Embedded Servlet Container (Tomcat)
• Database Manager (H2 database)
• Scaffolding
• Dependency management through Gant• Dependency management through Gant
(and Maven)
• Application packaging (war)
• Test runner (unit, integration, functional)
(Junit, Spock)
• Uses Groovy language
• Extensible with plugins
• And much more!
AA briefbrief introductionintroduction
- Grails App Architecture
- Grails paradigms (more buzz words)
• NIH (Not Invented Here)
• CoC (Convention over Configuration)
• DRY (Don’t Repeat Yourself)
HandsHands onon ((LaterLater at home)!at home)!
Before start, you have to…
1. Install Git in your computer
http://git-scm.com/book/en/Getting-Started-Installing-Git
2. Download Groovy/Grails Tool Suite 3.5
https://spring.io/tools/ggts/all
3. Start Groovy/Grails Tool Suite 3.5 (GGTS) and choose
or create a workspace (remember run it with a JDK)or create a workspace (remember run it with a JDK)
4. Download http://pronoide.com/downloads/javacro2014-grails2-
sesamestreet.zip and unzip it into workspace folder.
5. Pace yourself! It’s all quite straightforward…
Stage I: Create web application
i. Create webapp (create-app sesame-street)
note: it’s not necessary if you choose the Git way. (see
appendix at the end of this)
Stage II: Create domain
ii. Create the domain classes (create-domain-class
sesamestreet.Muppet)
Stage II: Create domain
iii. Define properties, constants, constraints and mappings
Stage II: Create domain
iv. Let’s complete the unit test (Spock’s way)
Stage II: Create domain
v. Run unit tests (test-app)
Stage II: Create domain
vi. Create an integration test (create-integration-test ),
and run it (test-app integration:)
Stage II: Create domain
vii. Let’s change database config and run again (test-app
integration:)
Stage III: Create business layer
viii.We have to create the service skeleton
(create-service sesamestret.MuppetDiscovery)
Stage III: Create business layer
ix. First, let’s write the unit test and run it (test-app
-unit sesamestreet.MuppetDiscoveryServiceUnitTests)
Stage III: Create business layer
x. Implement this service and its logging
Stage III: Create business layer
xi. Create an integration test and run all tests (test-app)
Stage IV: Create web layer
xii. Create our controller and its code
(create-controller sesamestreet.MuppetDiscovery)
Stage IV: Create web layer
xiii.First of all, let’s write down a unit test for the controller
Stage IV: Create web layer
xiv. Create integration test for controller too!
Stage IV: Create web layer
xv. Let’s write down the initial GSP page of searches
Stage IV: Create web layer
xvi. GSP page for the best matched muppet
Stage IV: Create web layer
xvii. GSP page for no matched muppets
Stage IV: Create web layer
xviii. Presentation fine tuning (main.gsp/main.css)
Stage V: Run Webapp
xix. Start the web application (run-app)
Stage V: Run Webapp
xx. Load initial data and map default controller
Stage V: Run Webapp
xxi. Play with the database
Stage V: Run Webapp
xxii. Play with the webapp
We'reWe're done!done!
I wish I had had this app 4 years ago
for entertaining the kids… But at
the present time, a new period
begins at home: Superheroes and
fairies, but that remains for my next
year JavaCro talk…year JavaCro talk…
ThanksThanks!!
@pronoide_fer
https://github.com/fredondo/
fredondo@pronoide.com
http://pronoide.com
ApendixApendix:: HandsHands onon ((LaterLater at home)!at home)!
Navigate along the proyect code with git presenter
1. Install jruby or ruby
http://jruby.org/getting-started
https://www.ruby-lang.org/en/installation/
2. Install git presenter (gem install git_presenter)
3. When the code is ready use the "git-presenter init" command
to initialize
4. Once it is initialized you can start the presentation with "git-
presenter start"presenter start"
5. Then use the following commands to navigate the presentation
• next/n: move to the next slide (commit)
• back/b: move to the back slide (commit)
• end/e: move to the end of presentation
• start/s: move to the start of presentation
• list/l : list slides in presentation
• help/h: display this message
ApendixApendix:: Stage I: Create web application
i. Import webapp (File/Import/Git/Proyect from Git)
note: it’s compulsory if you choose the git way

Mais conteúdo relacionado

Mais procurados

Francesco abeni joomla_extensions_best_practices
Francesco abeni joomla_extensions_best_practicesFrancesco abeni joomla_extensions_best_practices
Francesco abeni joomla_extensions_best_practices
Francesco Abeni
 

Mais procurados (9)

Hack your carrer : teach yourself coding
Hack your carrer : teach yourself codingHack your carrer : teach yourself coding
Hack your carrer : teach yourself coding
 
Discovering MySQL 5.7 @ InstantPost
Discovering MySQL 5.7 @ InstantPostDiscovering MySQL 5.7 @ InstantPost
Discovering MySQL 5.7 @ InstantPost
 
5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)5 best practices for (web/ software) development (2010)
5 best practices for (web/ software) development (2010)
 
how programmer exercise in the time of COVID-19
how programmer exercise in the time of COVID-19how programmer exercise in the time of COVID-19
how programmer exercise in the time of COVID-19
 
Francesco abeni joomla_extensions_best_practices
Francesco abeni joomla_extensions_best_practicesFrancesco abeni joomla_extensions_best_practices
Francesco abeni joomla_extensions_best_practices
 
Building APIs for your Frontend
Building APIs for your FrontendBuilding APIs for your Frontend
Building APIs for your Frontend
 
Designing a Conversational Intelligent Bot which can cook
Designing a Conversational Intelligent Bot which can cookDesigning a Conversational Intelligent Bot which can cook
Designing a Conversational Intelligent Bot which can cook
 
Typescript: Javascript senza problemi by Andrea Boschin
Typescript: Javascript senza problemi by Andrea BoschinTypescript: Javascript senza problemi by Andrea Boschin
Typescript: Javascript senza problemi by Andrea Boschin
 
Picademy #3 Python Picamera GPIO Workshop
Picademy #3 Python Picamera GPIO WorkshopPicademy #3 Python Picamera GPIO Workshop
Picademy #3 Python Picamera GPIO Workshop
 

Destaque

Destaque (20)

JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir DžaferovićJavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
JavaCro'14 - Continuous deployment tool – Aleksandar Dostić and Emir Džaferović
 
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor SauerJavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
JavaCro'14 - JCalc Calculations in Java with open source API – Davor Sauer
 
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter PilgrimJavaCro'14 - Going Digital with Java EE - Peter Pilgrim
JavaCro'14 - Going Digital with Java EE - Peter Pilgrim
 
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav RešetarJavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
JavaCro'14 - Packaging and installing of the JEE solution – Miroslav Rešetar
 
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija KranjecJavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
JavaCro'14 - Gatling – weapon in ranks of performance testing – Andrija Kranjec
 
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
JavaCro'14 - The World of Java – in Croatia – Branko Mihaljević and Aleksande...
 
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan JanssenJavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
JavaCro'14 - Profile any environment with Java Flight Recorder – Johan Janssen
 
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...JavaCro'14 - Is there a single “correct” web architecture for business apps –...
JavaCro'14 - Is there a single “correct” web architecture for business apps –...
 
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško VukmanovićJavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
JavaCro'14 - WebLogic-GlassFish-JaaS Strategy and Roadmap – Duško Vukmanović
 
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
 
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen ČikaraJavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
JavaCro'14 - ZeroMQ and Java(Script) – Mladen Čikara
 
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
JavaCro'14 - Amphinicy crown jewels our software development infrastructure –...
 
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
 
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan RagužJavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
JavaCro'14 - Java in M2M technologies – Mango M2M software – Ivan Raguž
 
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad PećanacJavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
 
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
JavaCro'14 - How to handle large amounts of data in real time using a cloud e...
 
JavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko ElezovićJavaCro'14 - Automatic database migrations – Marko Elezović
JavaCro'14 - Automatic database migrations – Marko Elezović
 
JavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan KrešićJavaCro'14 - GWT rebooted – Gordan Krešić
JavaCro'14 - GWT rebooted – Gordan Krešić
 
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
JavaCro'14 - Automatized testing with Selenium 2 – Juraj Ćutić and Aleksander...
 
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
JavaCro'14 - Cloud Platforms in Internet of Things – Krešimir Mišura and Bran...
 

Semelhante a JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails star there – Fernando Redondo Ramírez

Android WebView, The Fifth Element
Android WebView, The Fifth ElementAndroid WebView, The Fifth Element
Android WebView, The Fifth Element
Murat Yener
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rake
jazzman1980
 

Semelhante a JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails star there – Fernando Redondo Ramírez (20)

Javacro 2014 SemameStreet Grails 2 Speech
Javacro 2014  SemameStreet Grails 2 SpeechJavacro 2014  SemameStreet Grails 2 Speech
Javacro 2014 SemameStreet Grails 2 Speech
 
Greach 2014 Sesamestreet Grails2 Workshop
Greach 2014 Sesamestreet Grails2 Workshop Greach 2014 Sesamestreet Grails2 Workshop
Greach 2014 Sesamestreet Grails2 Workshop
 
Hack Rio/OS
Hack Rio/OSHack Rio/OS
Hack Rio/OS
 
From Selenium to Appium: How Hard Can It Be? by Sergio Neves Barros
From Selenium to Appium: How Hard Can It Be? by Sergio Neves BarrosFrom Selenium to Appium: How Hard Can It Be? by Sergio Neves Barros
From Selenium to Appium: How Hard Can It Be? by Sergio Neves Barros
 
Selenium to Appium - how hard can it be (SauceCon).
Selenium to Appium - how hard can it be (SauceCon).Selenium to Appium - how hard can it be (SauceCon).
Selenium to Appium - how hard can it be (SauceCon).
 
Developing cross platform desktop application with Ruby
Developing cross platform desktop application with RubyDeveloping cross platform desktop application with Ruby
Developing cross platform desktop application with Ruby
 
RailsConf 2022 - Upgrading Rails: The Dual Boot Way
RailsConf 2022 - Upgrading Rails: The Dual Boot WayRailsConf 2022 - Upgrading Rails: The Dual Boot Way
RailsConf 2022 - Upgrading Rails: The Dual Boot Way
 
Sylius, the good choice
Sylius, the good choiceSylius, the good choice
Sylius, the good choice
 
CoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copyCoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copy
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Dependent things dependency management for apple sw - slideshare
Dependent things   dependency management for apple sw - slideshareDependent things   dependency management for apple sw - slideshare
Dependent things dependency management for apple sw - slideshare
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern Web
 
Few command line tools for help Android development
Few command line tools for help Android developmentFew command line tools for help Android development
Few command line tools for help Android development
 
Migrating Web SDK from JS to TS
Migrating Web SDK from JS to TSMigrating Web SDK from JS to TS
Migrating Web SDK from JS to TS
 
Android WebView, The Fifth Element
Android WebView, The Fifth ElementAndroid WebView, The Fifth Element
Android WebView, The Fifth Element
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rake
 
Untangling4
Untangling4Untangling4
Untangling4
 
BlackBerry 10 Browser
BlackBerry 10 BrowserBlackBerry 10 Browser
BlackBerry 10 Browser
 
[not edited] Demo on mobile app development using ionic framework
[not edited] Demo on mobile app development using ionic framework[not edited] Demo on mobile app development using ionic framework
[not edited] Demo on mobile app development using ionic framework
 

Mais de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 

Mais de HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

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 New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
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
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 

JavaCro'14 - Can You Tell Me How to Get to Sesame Street I wanna be a Grails star there – Fernando Redondo Ramírez

  • 1. Can You tell me how to get to Sesame Street? I wanna be a Grails rookie star there! Fernando Redondo RamírezFernando Redondo Ramírez @@pronoide_ferpronoide_fer
  • 2. RoadmapRoadmap • About me • A brief introduction… • Hands on!• Hands on!
  • 3. AboutAbout MeMe • Entrepreneur and Business Manager at Pronoide since 2003 • Java & Friends Trainer (JEE, Spring, Groovy, Maven, Jenkins, Sonar, Weblogic, Jboss, Websphere, Disco dancing and so ) • Doing things with Java from 1999 on • Computer Engineer • Happily married and proud father of two children who• Happily married and proud father of two children who love all Sesame Street stuff
  • 4. AA briefbrief introductionintroduction - Just another Grails speech (jags)? - Yes indeed!, but: • We’ll build it all from scratch • We’ll leverage Grails 2.3 • We’re going to do a lot of tests • We’ll deal with the whole app• We’ll deal with the whole app code • We won’t use Scaffolding ;) • No plugins are necessary
  • 5. AA briefbrief introductionintroduction - But, What is Grails? - Grails isn’t only another web development framework, but it’s a full web development platform: • Embedded Servlet Container (Tomcat) • Database Manager (H2 database) • Scaffolding • Dependency management through Gant• Dependency management through Gant (and Maven) • Application packaging (war) • Test runner (unit, integration, functional) (Junit, Spock) • Uses Groovy language • Extensible with plugins • And much more!
  • 6. AA briefbrief introductionintroduction - Grails App Architecture - Grails paradigms (more buzz words) • NIH (Not Invented Here) • CoC (Convention over Configuration) • DRY (Don’t Repeat Yourself)
  • 7. HandsHands onon ((LaterLater at home)!at home)! Before start, you have to… 1. Install Git in your computer http://git-scm.com/book/en/Getting-Started-Installing-Git 2. Download Groovy/Grails Tool Suite 3.5 https://spring.io/tools/ggts/all 3. Start Groovy/Grails Tool Suite 3.5 (GGTS) and choose or create a workspace (remember run it with a JDK)or create a workspace (remember run it with a JDK) 4. Download http://pronoide.com/downloads/javacro2014-grails2- sesamestreet.zip and unzip it into workspace folder. 5. Pace yourself! It’s all quite straightforward…
  • 8. Stage I: Create web application i. Create webapp (create-app sesame-street) note: it’s not necessary if you choose the Git way. (see appendix at the end of this)
  • 9. Stage II: Create domain ii. Create the domain classes (create-domain-class sesamestreet.Muppet)
  • 10. Stage II: Create domain iii. Define properties, constants, constraints and mappings
  • 11. Stage II: Create domain iv. Let’s complete the unit test (Spock’s way)
  • 12. Stage II: Create domain v. Run unit tests (test-app)
  • 13. Stage II: Create domain vi. Create an integration test (create-integration-test ), and run it (test-app integration:)
  • 14. Stage II: Create domain vii. Let’s change database config and run again (test-app integration:)
  • 15. Stage III: Create business layer viii.We have to create the service skeleton (create-service sesamestret.MuppetDiscovery)
  • 16. Stage III: Create business layer ix. First, let’s write the unit test and run it (test-app -unit sesamestreet.MuppetDiscoveryServiceUnitTests)
  • 17. Stage III: Create business layer x. Implement this service and its logging
  • 18. Stage III: Create business layer xi. Create an integration test and run all tests (test-app)
  • 19. Stage IV: Create web layer xii. Create our controller and its code (create-controller sesamestreet.MuppetDiscovery)
  • 20. Stage IV: Create web layer xiii.First of all, let’s write down a unit test for the controller
  • 21. Stage IV: Create web layer xiv. Create integration test for controller too!
  • 22. Stage IV: Create web layer xv. Let’s write down the initial GSP page of searches
  • 23. Stage IV: Create web layer xvi. GSP page for the best matched muppet
  • 24. Stage IV: Create web layer xvii. GSP page for no matched muppets
  • 25. Stage IV: Create web layer xviii. Presentation fine tuning (main.gsp/main.css)
  • 26. Stage V: Run Webapp xix. Start the web application (run-app)
  • 27. Stage V: Run Webapp xx. Load initial data and map default controller
  • 28. Stage V: Run Webapp xxi. Play with the database
  • 29. Stage V: Run Webapp xxii. Play with the webapp
  • 30. We'reWe're done!done! I wish I had had this app 4 years ago for entertaining the kids… But at the present time, a new period begins at home: Superheroes and fairies, but that remains for my next year JavaCro talk…year JavaCro talk…
  • 32. ApendixApendix:: HandsHands onon ((LaterLater at home)!at home)! Navigate along the proyect code with git presenter 1. Install jruby or ruby http://jruby.org/getting-started https://www.ruby-lang.org/en/installation/ 2. Install git presenter (gem install git_presenter) 3. When the code is ready use the "git-presenter init" command to initialize 4. Once it is initialized you can start the presentation with "git- presenter start"presenter start" 5. Then use the following commands to navigate the presentation • next/n: move to the next slide (commit) • back/b: move to the back slide (commit) • end/e: move to the end of presentation • start/s: move to the start of presentation • list/l : list slides in presentation • help/h: display this message
  • 33. ApendixApendix:: Stage I: Create web application i. Import webapp (File/Import/Git/Proyect from Git) note: it’s compulsory if you choose the git way