Groovy is een objectgeoriënteerde programmeertaal voor het Java-platform. Het kan worden gebruikt als een scripttaal voor het Java-platform, en heeft eigenschappen vergelijkbaar met Ruby, Python, Perl en Smalltalk. Groovy 1.0 werd uitgebracht op 2 januari 2007. De taal wordt gestandaardiseerd in het Java Community Process als JSR 241.

Kenmerken 
De syntaxis van Groovy lijkt op Java. Het wordt gecompileerd naar bytecode voor de Java Virtual Machine. Het kan gebruikt worden in combinatie met andere Javacode en bibliotheken. De Groovy-compiler kan Java bytecode genereren die vervolgens in een Javaproject gebruikt kan worden. De meeste Javacode is ook geldig in Groovy waardoor Java op dynamische wijze uitgevoerd kan worden.

Groovy bevat enkele zaken die Java niet heeft, zoals hogere-ordefuncties, closures, dynamische typering en operator-overloading. Daarnaast wordt ook nog steeds statische typering ondersteund. Ook bevat Groovy syntaxis voor associatieve arrays (maps), ondersteuning voor reguliere expressies en de ?-operator om veilig te controleren of een object gelijk is aan null (bijvoorbeeld object?.veld). Groovy bevat ook ingebouwde ondersteuning voor een aantal opmaaktalen, zoals XML en HTML.

Geschiedenis 
In augustus 2003 besprak James Strachan op zijn blog de ontwikkeling van Groovy voor het Java-platform. Er zijn verscheidene versies uitgebracht tussen 2004 en 2006. Tijdens het standaardiseren van de taal door het JCP werd de versienummering aangepast en versie "1.0" werd uitgebracht op 2 januari 2007.

Na enkele bèta's en release candidates werd op 7 december 2007 Groovy 1.1 Final uitgebracht. Deze werd gelijk omgedoopt tot Groovy 1.5 om aan te geven dat er grote vorderingen waren gemaakt in vergelijking met eerdere versies.

In oktober 2013 dook het op in de top 20 van de Tiobe Programming Community Index, die de populariteit van programmeertalen meet. Het maakte hiermee een sterke groei: de maand ervoor stond de taal nog op de 53e plaats.

Syntaxis 
Hieronder staat een voorbeeld van Groovy in vergelijking met 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}

Externe links 
Officiële site
JSR 241 - jcp.org

Java (programmeertaal)
Opensourcesoftware en vrije software