Apache Groovy

linguaggio di programmazione espansione del Java
Disambiguazione – Se stai cercando l'album di Red Garland, vedi Groovy (album).

Apache Groovy è un linguaggio di programmazione ad oggetti per la Piattaforma Java alternativo al linguaggio Java. È un linguaggio sia statico che dinamico e presenta caratteristiche simili a quelle di Python, Ruby e Smalltalk. Può essere utilizzato sia come linguaggio di programmazione che come linguaggio di scripting. A volte ci si riferisce a Groovy con il nome alternativo di JSR 241.

Apache Groovy
linguaggio di programmazione
AutoreGuillaume Laforge
Data di origine2003
Ultima versione4.0.26 (24 febbraio 2025)
UtilizzoGeneral purpose
ParadigmiOrientato agli oggetti, imperativa, scripting
TipizzazioneForte, Dinamica
Estensioni comunigroovy, gvy, gsh e gy
Influenzato daJava, Python, Ruby, Perl, Smalltalk, Objective-C
Implementazione di riferimento
Sistema operativoMultipiattaforma
LicenzaLicenza Apache v. 2.0
Sito webgroovy-lang.org e groovy.apache.org/

Dalla versione 2.0 Groovy può essere staticamente compilato con performance comparabili a quelle di Java.

Caratteristiche

Groovy usa una sintassi simile a quella di Java, basata su parentesi graffe, viene compilato dinamicamente in bytecode per la Java Virtual Machine (JVM), ed interagisce in modo trasparente con altro codice Java e con le librerie esistenti. Il compilatore di Groovy può essere usato per generare bytecode Java standard che può quindi essere usato da qualsiasi progetto Java. Groovy può anche venire usato come linguaggio di scripting dinamico.

Altre caratteristiche:

Confronto della sintassi

Standard Java (Java 5+)
 for (String item : new String [] {"Rod", "Carlos", "Chris"}) {
     if (item.length() <= 4) System.out.println(item);
 }
Groovy
 ["Rod", "Carlos", "Chris"].findAll{ it.size() <= 4 }.each{ println it }

Supporto per linguaggi markup

Una caratteristica di Groovy che vale la pena sottolineare è il suo supporto nativo per vari linguaggi di markup come XML ed HTML. Questa caratteristica permette di definire e manipolare molti tipi di dati eterogenei con una sintassi ed una metodologia di programmazione uniformi.

Per esempio il seguente codice Groovy:

    import groovy.xml.MarkupBuilder
    def myXMLDoc = new MarkupBuilder()
    myXMLDoc.workbook {
       worksheet(caption:"Employees") {
          row(fname:"John", lname:"McDoe")
          row(fname:"Nancy", lname:"Davolio")
       }
       worksheet(caption:"Products") {
          row(name:"Veeblefeetzer", id:"sku34510")
          row(name:"Prune Unit Zappa", id:"sku3a550")
       }
    }
    println myXMLDoc

Produce questo XML:

    <workbook>
       <worksheet caption='Employees'>
          <row fname="John" lname="McDoe" />
          <row fname="Nancy" lname="Davolio" />
       </worksheet>
       <worksheet caption='Products'>
          <row name="Veeblefeetzer" id="sku34510" />
          <row name="Prune Unit Zappa" id="sku3a550" />
       </worksheet>
    </workbook>

Storia

James Strachan parlò per la prima volta dello sviluppo di Groovy sul suo blog nell'agosto 2003[1]. Diverse versioni furono pubblicate tra il 2004 ed il 2006. Dopo l'inizio del processo di standardizzazione JCP, la numerazione delle versioni fu cambiata e la versione chiamata "1.0" fu pubblicata martedì 2 gennaio 2007.

Dopo varie versioni beta e release candidate numerate come 1.1, il 7 dicembre 2007 Groovy 1.1 Final è stato pubblicato e rinumerato come Groovy 1.5, per evidenziare i grandi miglioramenti fatti rispetto alla precedente versione.

Groovy 2.5 è stato rilasciato a maggio 2018, richiede almeno JDK 7.

Groovy 3.0 è stato rilasciato a febbraio 2020, richiede almeno JDK 8 e introduce un nuovo parser più flessibile (chiamato "Parrot").

Groovy 4.0 è stato rilasciato a gennaio 2022, richiede almeno JDK 8 e implementa un supporto migliorato per JPMS.

Dalla versione 5.0 Groovy avrà come requisito minimo JDK 11.

Note

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autoritàLCCN (ENsh2007001244 · J9U (ENHE987007549666405171
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica