A Groovy nyelv a JCP (Java Community Process) része. A JSR folyamat részeként három dolgot kell a fejlesztőknek elkészíteniük: A referencia implementációt (RI = Reference Implementation), egy teszt csomagot a nyelvhez (TCK = Test Compatibility Kit), a nyelv specifikációját (GLS = Groovy Language Specification). A végleges 1.0ás verziójú referencia implementációt 2007 január 2-án jelent meg. 2007 december 7-én jelent meg az 1.1-es változat, amit hamar át is neveztek 1.5-ösnek, hogy így is kifejezzék az új verzió nagy fejlődését.
A Groovy Java stílusú szintaxist használ, így azoknak, akik már ismerik a java nyelvet, a Groovy megtanulása nem okozhat gondot.
A nyelv rendelkezik a dinamikus nyelvek legtöbb képességével. A JDK osztályait sok kényelmes funkcióval egészítették ki, és a Groovy standard könyvtárában további praktikus eszközöket találunk, amik megkönnyítik a Java platformon felmerülő feladatok megoldását (pl. xml kezelés, adatbázis elérés, EJBk, string műveletek, ablakos alkalmazások, ...).
A Groovy nyelv a Java nyelvből hiányolt bizonyos képességekkel is rendelkezik, úgy mint felsorolási típus, operátor túlterhelés, closure-ök (vagy névtelen függvények), dinamikus típusok.
Mindezek mellett tetszőleges Java kódot is használhatunk (a Groovy tényleg a Java kiegészítése).
A Groovy a JVM-re épülő nyelvek között jól teljesít sebesség szempontjából is. Az interpretált futtatás mellett a Groovy fordítható bájtkóddá, ami egyéb előnyök mellett a teljesítményt is javítja, és így más java osztályokkal is együtt használható.
Jópár nyílt forrású projekt is épül a Groovyra, amit a nyelv köré épülő közösség aktívan fejleszt. Az alábbi linken a Groovyt használó projektek listáját találhatjuk.
Hátránya a nyelvnek, hogy még mindig rosszul dokumentált.
A nyelv telepítésének folyamata az alábbi linken olvasható.
Telepítés után négy féle képpen használhatjuk a nyelvet:
Groovy szkripteket bájtkóddá fordíthatunk a groovyc ant-task segítségével a javac-hez hasonlóan. Ekkor minden Groovy osztály egy normális Java osztállyá válik, amit használhatunk a Java kódunkban, ezek az osztályok megvalósítják a GroovyObject interfészt.
Groovy kódot három féleképpen ágyazhatunk Java alkalmazásokba.
Tetszőleges szkriptet vagy kifejezést kiértékelhetünk egy GroovyShell objektum segítségével. A kiértékelt szkripttel egy Binding objektumon vagy a visszatérési értéken keresztül kommunikálhatunk. A Binding objektumban beállíthatunk változókat és a futás után visszanyerhetjük az értéküket.
Ha Groovy osztályunk megvalósít egy interfészt, akkor kasztolhatjuk az osztály példányait az interfész típusára, és onnantól a Java kódban úgy használhatjuk, mint bármelyik Java objektumot, ami megvalósítja ezt az interfészt.
Groovy szkriptek futtatására alkalmas még a GroovyScriptEngine. A GroovyScriptEngine-t gyökér elemek halmazával inicializálhatjuk, amik könyvtárakat, és URL-eket jelölnek. Ezután a GSE ezeken a gyökér elemeken belüli szkripteket lefordítja és képes őket futtatni. Követi a szkriptek közti függőségeket és ha valamelyik szkript megváltozik, akkor a tőle függő teljes hierarchiát újrafordítja és újratölti.