Tecnologie Groovy Parte Seconda Novembre 2013 Francesco Lerro 1 giovedì 7 novembre 13
Tecnologie GroovyParte Seconda
Novembre 2013 Francesco Lerro
1giovedì 7 novembre 13
Nelle puntate precedenti...
2giovedì 7 novembre 13
+Smalltalk
{3giovedì 7 novembre 13
• Agile ed espressivo (es. Collection, ?. , ?: , Sluper, Builder, ...)
• Dinamico (Category, Mixin, Metaclass)
• Dichiarativo/funzionale (Closures)
4giovedì 7 novembre 13
In questa puntata...
5giovedì 7 novembre 13
Ecosistema
Geb, Spock, WSLite...
6giovedì 7 novembre 13
• Framework Web ad alta produttività
• Solido: Spring, Hibernate, Sitemesh
• Moderno: COC, smart reloading, scaffolding
• Molti plugin: Spring Security, MongoDB, etc.
7giovedì 7 novembre 13
Live Demoexpense-manager
8giovedì 7 novembre 13
• Test automatici nel browser
• Funziona su Firefox, Chrome, IE, Safari
• Selezione HTML stile jQuery
• Si integra con JUnit, TestNG, Spock
Geb
9giovedì 7 novembre 13
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
10giovedì 7 novembre 13
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
11giovedì 7 novembre 13
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
12giovedì 7 novembre 13
Spock
• Testing e specification framework
• Molto espressivo, facile da imparare
• Facilita approccio Behaviour Driven
13giovedì 7 novembre 13
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
13giovedì 7 novembre 13
14giovedì 7 novembre 13
15giovedì 7 novembre 13
Geb + Spock
15giovedì 7 novembre 13
Gradle
• Tool per l’automazione di build
• Flessibilità di Ant e convenzioni Maven
• Definizione dichiarativa via ad-hoc DSL
• Molto in voga
16giovedì 7 novembre 13
[project root] /src /main ! /java /resources /test /java /resources build.gradle
Un progetto Java
17giovedì 7 novembre 13
[project root] /src /main ! /java /resources /test /java /resources build.gradle
Un progetto Java ...
18giovedì 7 novembre 13
[project root] /src /main ! /java /resources /test /java /resources build.gradle
Un progetto Java ...
19giovedì 7 novembre 13
20giovedì 7 novembre 13
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)
21giovedì 7 novembre 13
Dataflow
22giovedì 7 novembre 13
Dataflow
enfasi sui dati ed il loro ‘flusso’ e non sul processo che li manipola(deadlock deterministico)
22giovedì 7 novembre 13
Attori
23giovedì 7 novembre 13
Attori
oggetti che si scambiano messaggi e non condividono stati mutabili(VS shared-memory multi-threading)
23giovedì 7 novembre 13
Web: http://rolandfg.net Twitter: @flerro
24giovedì 7 novembre 13
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
25giovedì 7 novembre 13