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

Groovy technology ecosystem

Embed Size (px)

Citation preview

Page 1: Groovy technology ecosystem

Tecnologie GroovyParte Seconda

Novembre 2013 Francesco Lerro

1giovedì 7 novembre 13

Page 2: Groovy technology ecosystem

Nelle puntate precedenti...

2giovedì 7 novembre 13

Page 3: Groovy technology ecosystem

+Smalltalk

{3giovedì 7 novembre 13

Page 4: Groovy technology ecosystem

• Agile ed espressivo (es. Collection, ?. , ?: , Sluper, Builder, ...)

• Dinamico (Category, Mixin, Metaclass)

• Dichiarativo/funzionale (Closures)

4giovedì 7 novembre 13

Page 5: Groovy technology ecosystem

In questa puntata...

5giovedì 7 novembre 13

Page 6: Groovy technology ecosystem

Ecosistema

Geb, Spock, WSLite...

6giovedì 7 novembre 13

Page 7: Groovy technology ecosystem

• Framework Web ad alta produttività

• Solido: Spring, Hibernate, Sitemesh

• Moderno: COC, smart reloading, scaffolding

• Molti plugin: Spring Security, MongoDB, etc.

7giovedì 7 novembre 13

Page 8: Groovy technology ecosystem

Live Demoexpense-manager

8giovedì 7 novembre 13

Page 9: Groovy technology ecosystem

• 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

Page 10: Groovy technology ecosystem

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

Page 11: Groovy technology ecosystem

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

Page 12: Groovy technology ecosystem

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

Page 13: Groovy technology ecosystem

Spock

• Testing e specification framework

• Molto espressivo, facile da imparare

• Facilita approccio Behaviour Driven

13giovedì 7 novembre 13

Page 14: Groovy technology ecosystem

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

Page 15: Groovy technology ecosystem

14giovedì 7 novembre 13

Page 16: Groovy technology ecosystem

15giovedì 7 novembre 13

Page 17: Groovy technology ecosystem

Geb + Spock

15giovedì 7 novembre 13

Page 18: Groovy technology ecosystem

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

Page 19: Groovy technology ecosystem

[project root] /src /main ! /java /resources /test /java /resources build.gradle

Un progetto Java

17giovedì 7 novembre 13

Page 20: Groovy technology ecosystem

[project root] /src /main ! /java /resources /test /java /resources build.gradle

Un progetto Java ...

18giovedì 7 novembre 13

Page 21: Groovy technology ecosystem

[project root] /src /main ! /java /resources /test /java /resources build.gradle

Un progetto Java ...

19giovedì 7 novembre 13

Page 22: Groovy technology ecosystem

20giovedì 7 novembre 13

Page 23: Groovy technology ecosystem

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

Page 24: Groovy technology ecosystem

Dataflow

22giovedì 7 novembre 13

Page 25: Groovy technology ecosystem

Dataflow

enfasi sui dati ed il loro ‘flusso’ e non sul processo che li manipola(deadlock deterministico)

22giovedì 7 novembre 13

Page 26: Groovy technology ecosystem

Attori

23giovedì 7 novembre 13

Page 27: Groovy technology ecosystem

Attori

oggetti che si scambiano messaggi e non condividono stati mutabili(VS shared-memory multi-threading)

23giovedì 7 novembre 13

Page 28: Groovy technology ecosystem

Web: http://rolandfg.net Twitter: @flerro

24giovedì 7 novembre 13

Page 29: Groovy technology ecosystem

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