En aquest tema, explorarem algunes de les llibreries i eines més populars i útils de l'ecosistema Groovy que no hem cobert en els mòduls anteriors. Aquestes llibreries poden ajudar-te a ampliar les capacitats del teu codi Groovy i fer el teu desenvolupament més eficient i efectiu.

  1. GPars (Groovy Parallel Systems)

GPars és una llibreria que facilita la programació concurrent i paral·lela en Groovy. Proporciona diverses abstraccions per gestionar la concurrència de manera segura i eficient.

Característiques Clau:

  • Actors: Model de concurrència basat en missatges.
  • Dataflow: Permet la programació reactiva i asincrònica.
  • Parallel Collections: Operacions paral·leles sobre col·leccions.

Exemple:

@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import groovyx.gpars.actor.Actors

def actor = Actors.actor {
    loop {
        react { message ->
            println "Received: $message"
        }
    }
}

actor << "Hello, GPars!"

  1. Geb (Groovy Browser Automation)

Geb és una llibreria per a l'automatització de navegadors web, combinant el millor de Selenium WebDriver, jQuery i Groovy.

Característiques Clau:

  • DSL per a l'automatització de navegadors.
  • Integració amb Spock per a proves.
  • Suport per a múltiples navegadors.

Exemple:

@Grab(group='org.gebish', module='geb-core', version='5.0')
import geb.Browser

Browser.drive {
    go 'https://www.example.com'
    assert title == 'Example Domain'
}

  1. Ratpack

Ratpack és un framework lleuger per a aplicacions web i serveis HTTP, dissenyat per ser ràpid i fàcil d'utilitzar.

Característiques Clau:

  • Arquitectura reactiva.
  • Suport per a aplicacions modulars.
  • Integració amb Groovy i Gradle.

Exemple:

@Grab(group='io.ratpack', module='ratpack-groovy', version='1.9.0')
import static ratpack.groovy.Groovy.ratpack

ratpack {
    handlers {
        get {
            render 'Hello, Ratpack!'
        }
    }
}

  1. Griffon

Griffon és un framework per a la creació d'aplicacions d'escriptori amb Groovy, similar a Grails però per a aplicacions GUI.

Característiques Clau:

  • Basat en el patró MVC.
  • Suport per a múltiples llibreries GUI com JavaFX i Swing.
  • Integració amb Gradle.

Exemple:

@Grab(group='org.codehaus.griffon', module='griffon-core', version='2.17.0')
import griffon.core.GriffonApplication
import griffon.swing.SwingGriffonApplication

class MyApp extends SwingGriffonApplication {
    static void main(String[] args) {
        GriffonApplication.run(MyApp, args)
    }
}

  1. GlazedLists

GlazedLists és una llibreria per a la gestió de llistes observables i la seva sincronització amb components GUI.

Característiques Clau:

  • Llistes observables.
  • Filtratge i ordenació eficient.
  • Integració amb Swing i JavaFX.

Exemple:

@Grab(group='net.java.dev.glazedlists', module='glazedlists', version='1.11.0')
import ca.odell.glazedlists.BasicEventList
import ca.odell.glazedlists.swing.EventListModel

def list = new BasicEventList()
list.add("Item 1")
list.add("Item 2")

def model = new EventListModel(list)
println model.getElementAt(0)  // Output: Item 1

Exercici Pràctic

Exercici:

  1. Crea una aplicació Groovy que utilitzi GPars per processar una llista de números en paral·lel i calcular el seu quadrat.
  2. Utilitza Geb per automatitzar la navegació a una pàgina web de la teva elecció i verificar el títol de la pàgina.

Solució:

Part 1: GPars

@Grab(group='org.codehaus.gpars', module='gpars', version='1.2.1')
import groovyx.gpars.GParsPool

def numbers = [1, 2, 3, 4, 5]

GParsPool.withPool {
    def squares = numbers.collectParallel { it * it }
    println squares  // Output: [1, 4, 9, 16, 25]
}

Part 2: Geb

@Grab(group='org.gebish', module='geb-core', version='5.0')
import geb.Browser

Browser.drive {
    go 'https://www.example.com'
    assert title == 'Example Domain'
}

Conclusió

En aquest tema, hem explorat algunes de les llibreries i eines més útils de l'ecosistema Groovy. Aquestes llibreries poden ajudar-te a ampliar les capacitats del teu codi i fer el teu desenvolupament més eficient. Practica amb aquestes eines per familiaritzar-te amb les seves funcionalitats i veure com poden beneficiar els teus projectes.

© Copyright 2024. Tots els drets reservats