I thought I will write a bit about what tools/technologies are there internally used in Groovy. So, here are the more prominent ones – in no particular order:
- Jansi – It is a java library that used to give groovy shell command line a consistent look and feel and behavior across operating systems. It handles the ANSI escape sequences to control the output on console terminals.
- Commons CLI – Apache Commons library to process command line options. Groovy makes its usage nicer and easier by providing a CliBuilder on top of it.
- Apache Ivy – Dependency manager framework behind the groovy feature @Grab (Grape) that allows you to mention in a script what libraries it requires and then transitively fetches them from a central repo like maven repo.
- Retrotranslator – It makes your java 5+ application compatible with JDK 1.4 (and lower) – through bytecode manipulations. Until Groovy 1.6, groovy runs on JDK 1.6/1.5/1.4 even though its own Java code is written in JDK 1.5. For groovy on JDK 1.4 environments, groovy code gets retro-translated using this library.
- bnd – It is used to turn groovy-*.jar and groovy-all-*.jar into OSGi compliant bundles
- JarJar – It embeds all the basic libraries needed by groovy at runtime into its fat groovy-all version so that this fat version needs no external libraries at runtime and avoids version conflict.
- Maven – If you are setting up development environment for groovy, there are a lot of libraries it depends on – for compile time, runtime, etc. Maven is used to manage these dependencies.
- Ant / Gradle – The build system of groovy is currently in transition from Ant to Gradle – soon, it should be all Gradle based, which itself is written in Groovy.
- ANTLR – Groovy grammar is defined using ANTLR syntax. Groovy source parser is generated by ANTLR.
- ASM – It’s the bytecode manipulation library that groovy uses to generate JVM compliant classes
There are many more useful things done in Groovy projects. More to come.