Slide 1

Slide 1 text

Tecnologie Groovy Parte Seconda Novembre 2013 Francesco Lerro 1 giovedì 7 novembre 13

Slide 2

Slide 2 text

Nelle puntate precedenti... 2 giovedì 7 novembre 13

Slide 3

Slide 3 text

+ Smalltalk { 3 giovedì 7 novembre 13

Slide 4

Slide 4 text

• Agile ed espressivo (es. Collection, ?. , ?: , Sluper, Builder, ...) • Dinamico (Category, Mixin, Metaclass) • Dichiarativo/funzionale (Closures) 4 giovedì 7 novembre 13

Slide 5

Slide 5 text

In questa puntata... 5 giovedì 7 novembre 13

Slide 6

Slide 6 text

Ecosistema Geb, Spock, WSLite... 6 giovedì 7 novembre 13

Slide 7

Slide 7 text

• Framework Web ad alta produttività • Solido: Spring, Hibernate, Sitemesh • Moderno: COC, smart reloading, scaffolding • Molti plugin: Spring Security, MongoDB, etc. 7 giovedì 7 novembre 13

Slide 8

Slide 8 text

Live Demo expense-manager 8 giovedì 7 novembre 13

Slide 9

Slide 9 text

• Test automatici nel browser • Funziona su Firefox, Chrome, IE, Safari • Selezione HTML stile jQuery • Si integra con JUnit, TestNG, Spock Geb 9 giovedì 7 novembre 13

Slide 10

Slide 10 text

import geb.Browser Browser.drive { go "http://myapp.com/login" assert $("h1").text() == "Please Login" $("form").find("input", name: "username").value(“admin”) $("form").find("input", name: "password").value(“password”) $("form").find("input", name: "login").value() assert $("h1").text() == "Admin Section" } Testing con Geb 10 giovedì 7 novembre 13

Slide 11

Slide 11 text

import geb.Browser Browser.drive { go "http://myapp.com/login" assert $("h1").text() == "Please Login" $("form").with { username = "admin" password = "password" login().click() } assert $("h1").text() == "Admin Section" } Testing con Geb 11 giovedì 7 novembre 13

Slide 12

Slide 12 text

import geb.Browser Browser.drive { go "http://myapp.com/login" assert $("h1").text() == "Please Login" $("form").with { username = "admin" password = "password" login().click() } assert $("h1").text() == "Admin Section" } Testing con Geb 12 giovedì 7 novembre 13

Slide 13

Slide 13 text

Spock • Testing e specification framework • Molto espressivo, facile da imparare • Facilita approccio Behaviour Driven 13 giovedì 7 novembre 13

Slide 14

Slide 14 text

given: "un nuovo conto bancario" when: "verso 10€" then: "il saldo del conto è 10€" Spock • Testing e specification framework • Molto espressivo, facile da imparare • Facilita approccio Behaviour Driven 13 giovedì 7 novembre 13

Slide 15

Slide 15 text

14 giovedì 7 novembre 13

Slide 16

Slide 16 text

15 giovedì 7 novembre 13

Slide 17

Slide 17 text

Geb + Spock 15 giovedì 7 novembre 13

Slide 18

Slide 18 text

Gradle • Tool per l’automazione di build • Flessibilità di Ant e convenzioni Maven • Definizione dichiarativa via ad-hoc DSL • Molto in voga 16 giovedì 7 novembre 13

Slide 19

Slide 19 text

[project root] /src /main ! /java /resources /test /java /resources build.gradle Un progetto Java 17 giovedì 7 novembre 13

Slide 20

Slide 20 text

[project root] /src /main ! /java /resources /test /java /resources build.gradle Un progetto Java ... 18 giovedì 7 novembre 13

Slide 21

Slide 21 text

[project root] /src /main ! /java /resources /test /java /resources build.gradle Un progetto Java ... 19 giovedì 7 novembre 13

Slide 22

Slide 22 text

20 giovedì 7 novembre 13

Slide 23

Slide 23 text

GPars • Groovy Parallel Systems • Framework per facilitare la costruzione di applicazioni concorrenti • Costrutti per Dataflow, attori, funzioni asicrone componibili, map-reduce... • Sfrutta l’espressività di Groovy (Closure) 21 giovedì 7 novembre 13

Slide 24

Slide 24 text

Dataflow 22 giovedì 7 novembre 13

Slide 25

Slide 25 text

Dataflow enfasi sui dati ed il loro ‘flusso’ e non sul processo che li manipola (deadlock deterministico) 22 giovedì 7 novembre 13

Slide 26

Slide 26 text

Attori 23 giovedì 7 novembre 13

Slide 27

Slide 27 text

Attori oggetti che si scambiano messaggi e non condividono stati mutabili (VS shared-memory multi-threading) 23 giovedì 7 novembre 13

Slide 28

Slide 28 text

Web: http://rolandfg.net Twitter: @flerro 24 giovedì 7 novembre 13

Slide 29

Slide 29 text

Riferimenti • Groovy User Guide - http://groovy.codehaus.org/User+Guide • Bob Brown - The future is Gr8 - http://wordpress.transentia.com.au/wordpress/ 2013/05/07/disaster/ • Sergey Dolgopolov - Testing the performance of new Groovy 2.0 release with GBench - http://www.sergeydolgopolov.me/2012/07/groovy-20-has-been-released- testing-new.html • Guillame Laforge - Groovy Ecosystem - http://www.slideshare.net/glaforge/groovy- ecosystem-jfokus-2011-guillaume-laforge • Hubert Klein Ikkink (aka mrhaki) - Groovy goodness blog - http://mrhaki.blogspot.it/ • Geb Samples - http://www.gebish.org • GPars Samples for Dataflow and Actors - http://gpars.codehaus.org • Spock Samples - http://code.google.com/p/spock/ • Tim Myer - http://timezra.blogspot.it/2011/11/trampoline-and-memoize.html 25 giovedì 7 novembre 13