Groovy provides a great way to provide dynamic scripting functionality for Java applications.

Groovy is interesting that it uses the Java run-time. The loose typing and run-time compilation puts it more on par with other scripting languages than Java/C++.

In the past I have used ECMA script or Rhino if I needed a language macro capability. Now Groovy is my preferred choice.