The Windows-Installer for Groovy 1.8.0 can now be downloaded from the Groovy Website ( direct link). It takes care of the gory details of a Windows installation, copying files, setting environment variables and file associations. The installation of everything but the binaries including the native launcher is optional.

This is the first release to contain groovy++. Also, this installer does not contain the Griffon builders since the necessary changes to run under 1.8 weren't possible in time for the release. The next installer (1.8.1) will contain them again. Finally, since GPars is now part of the core distribution it is always installed, and is no longer provided as a module.

Currently supported languages for the installer are english, german, spanish, french and brazilian portuguese.

The Groovy development team is really pleased and proud to announce the release of the final version of Groovy 1.8.0!

After a lot of work and efforts throughout four betas and four release candidates, version 1.8 of Groovy has been long in the making, but is packed with tons of new features and enhancements, for your productivity, and your pleasure. In particular, you'll be happy to learn about:

To get all the details, with code samples, we have prepared an in-depth release notes document. Please have a look at it to learn more about the features listed above, and discover other smaller enhancements as well.

You can download Groovy 1.8 in our download section and you can have a look at the list of JIRA tickets that have found their way into this major release.

We'd like to thank all those who participated and contributed to this release: users, contributors, committers, framework writers, IDE developers, book authors. Without you all, Groovy wouldn't be the great productive language it is now. And again, without you all, Groovy wouldn't be surrounded by its vibrant, active and rich ecosystem, giving you advanced tools and frameworks for building web applications (Grails, Gaelyk) or rich desktop applications (Griffon), for building your own projects (Gradle), for testing your projects (Spock, Geb), for tackling the concurrency and parallel problems on our multi-core / multi-processor architectures (GPars), or for improving the quality of your Groovy code bases (CodeNarc for static code analysis, GContracts for design by contract).

Enjoy this release!

Groovy 1.8 RC 4 released

Hi all,

The Groovy development team is pleased to announce the release of Groovy 1.8-RC-4.

The main reason for doing another RC release is to address some important bugs:

As usual you can download Groovy-1.8-RC-4 here:

The full release notes can be found here:

Thanks a lot for helping to make 1.8.0 a solid release.

Jochen "blackdrag" Theodorou
The Groovy Project Tech Lead
For Groovy programming sources visit

It is this time of the year: GR8Conf Europe 2011 is ready to rock the Groovy world!

Register now to save €300 with the Early Bird rate!

Three days packed with Groovy, Grails, Griffon, Gradle, Spock, GPars, Gaelyk, AST transformations, GContracts, Grails Plugins development, and lots of other gr8 stuff.

This year, the conference is growing. We kick of the conference with a university day, with two tracks, one intermediate and one advanced, with workshops and hands-on training:

  • The intermediate will kickstart your Groovy and Grails development skills with a Groovy workshop, followed by a Grails workshop.
  • The advanced track will feature an AST transformations workshop, followed by a Grails plugin development workshop.

Note: The university day is optional, if you only want to attende the two main conference days.

The conference agenda will feature updates from Groovy, Grails, Griffon, Gradle, Spock and others, by the founders and developers of these tools and frameworks.

You will learn all about those groovy-powered project of the ecosystem from the horse’s mouth. If you want to meet and chat with guys like Guillaume Laforge, Jochen “blackdrag” Theodorou, Paul King, Dierk König and Hamlet D’Arcy (Groovy), like Andres Almiray (Griffon), like Peter Ledbrook and Burt Beckwith (Grails), like Peter Niederwieser (Gradle and Spock), or Václav Pech (GPars), and many more, this is the best opportunity for you to interact with the gang!

There will be case studies from various companies, telling about real life projects, and there will be lots of sessions covering various topics in the Groovy ecosystem. To cram this in to two days, the conference is going to be two-tracked, compared to the previous editions.

To top it off, we feature Hackergarten — an open event, where you can come and hack your favorite Open Source project. You can attend even if you are not a conference attendee!

The conference takes place in Copenhagen, Denmark, on May 17th-19th.

You can benefit from the interesting Early Bird rate until April 14th and save €300! That’s a bargain you shouldn’t miss!

Register at now!

We’re looking forward to meeting you there!

Follow us on twitter: @gr8conf

The Groovy development team is pleased to announce the joint releases of Groovy 1.7.10 and Groovy 1.8-RC-3.

Due to some hiccup during the release process, not all the fixes we had intended to bundle were part of the 1.7.9 release, so this newer drop fills the gap and brings back all the changes we had previously announced. And on the front of the Groovy 1.8-RC-3 release, we fixed a potential synchronization issue that may affect users of ExpandoMetaClasses. Those two releases are basically just bug-fix releases.

You can download Groovy 1.7.10 and Groovy 1.8-RC-3 here:

And have a look at the JIRA release notes:

Thanks a lot for continuing your test-driving of the 1.8 release candidate!

The Groovy development team is pleased to announce the joint releases of Groovy 1.7.9 and the second release candidate for Groovy 1.8.

In those two releases, we essentially focused on bug fixes.

We'd appreciate if you could test this release candidate with your applications, to report any issue or regression you may find.
Your help is needed and will be very much appreciated.
Unless critical bugs or regressions are found, this second RC should be the last before the final release in a couple of weeks from now.

You can download Groovy 1.7.9 and Groovy 1.8-rc-2 here:

And have a look at the JIRA release notes:

Thanks for your help test driving that Release Candidate.

The Groovy development team is pleased to tell you about the first release candidate of Groovy 1.8.

We'd appreciate if you could please test this release with your application, to report any issue or regression you may find.
Your help is needed and will be very much appreciated.

You can download Groovy 1.8-rc-1 here:

And have a look at the JIRA release notes:

Thanks for your help test driving that Release Candidate.

The Groovy development team is pleased to announce the joint release of Groovy 1.7.7 and Groovy 1.8-beta-4, the latest releases of the popular dynamic language for the JVM.

Groovy 1.7.7 is a maintenance release of our official stable 1.7.x branch, whereas 1.8-beta-4 is the last beta version before the release candidates of the upcoming major version of Groovy.

The key highlights of the latest beta are:

  • our ongoing performance improvement work on primitive integer calculations,
  • the bundling of GPars in the libraries of the binary distribution,
  • and built-in JSON support with a JSON slurper and a JSON parser

If you wish to learn more about the JSON support, you can have a look at the JSON Groovy Extension Proposal and the unit tests for the slurper and the builder.

Here's an example for the JSON slurper, fetching tweets from Twitter about the #groovy hashtag:

And another example showing how you can create JSON payloads with the JSON builder:

You can download and read about the JIRA release notes here:

Groovy 1.7.7

Groovy 1.8-beta-4

You may wish to have a look at the recent features introduced in previous betas by reading the following release notes:

  • Groovy 1.7.6 and 1.8-beta-3 : new AST transformations, closure memoization and trampolining, etc.
  • Groovy 1.7.5 and 1.8-beta-2 : closure composition, new Domain-Specific Language syntax, etc.
  • Groovy 1.7.4 and 1.8-beta-1 : new AST transformations, annotation closure parameters, etc.
    We'd be glad of you could test the Groovy 1.8 beta to give us as much feedback as you can on this release, before it becomes the new official stable branch of Groovy. Thanks a lot for your help making the 1.8 release a success and for your invaluable feedback. We'd love that everybody try the latest beta in their respective applications, so we can find any regression or potential issue that may arise.

Thanks a lot to all involved in this pair of releases, and for the support of our friendly community!

Gaelyk 0.6 released

A new important milestone of the Gaelyk toolkit for Google App Engine has been released, with version 0.6. This is an important release in terms of quality, features and documentation.

Gaelyk is a lightweight toolkit developped in Groovy, letting you develop applications for the Google App Engine cloud using the Groovy programming language.

Make sure to have a look at the release notes in the download section. You'll be able to appreciate a list of existing Gaelyk apps in the wild on the front page. You will be happy to browse the documentation as a PDF or as asingle-page ready to print. And you will be able to search through the documentation, the Google Group, and the GitHub hosting site for the latest code activity and feature requests and bug reports, thanks to Google's integrated search.

One sign that Groovy has entered main-stream is the
raising availability of regular training events.

Main provides of such training events are
SpringSource, SkillsMatter (UK), and LinuxHotel (Germany),
which provide regular, quarterly events.

Please find more information on the respective
Wiki Page

--Dierk Koenig

Hi all,

The Groovy development team is pleased to announce the releases of Groovy 1.7.6 and 1.8-beta-3.

Groovy 1.7.6 is mainly a bug-fix release, whereas 1.8-beta-3 offers some interesting new features and capabilities, especially a preview of performance for primitive operations.

You can have a look at the JIRA release notes for Groovy 1.7.6 and Groovy 1.8-beta-3.

The key highlights for the new beta of our upcoming Groovy 1.8 release:

  • extended command expressions can be used on the right-hand side of assignments
  • the @Log AST transformation is customizable for your own logging needs
  • Map now has an isCase() method
  • a @GrabResolver shortcut with @GrabResolver("http://some/url")
  • String can be coerced to Enums ("blue" as Color)
  • support for closure memoization and trampoline
  • @ThreadInterrup, @ConditionalInterupts and @TimedInterrupt AST transformations for stopping the execution of embedded scripts
  • min() / max() methods on maps (on values)
  • ability to store node metadata in AST nodes, for use in your AST transformations

But beyond those new features, a key aspect of the new beta is a first batch of performance improvements related to primitive int handling.
Currently, most int based operations are optimized to use primitive arithmetics bytecode.
So when a lot of int calculations is involved, you should see some interesting improvements.
Later on, we'll obviously add support for the other primitive types, and find other areas to improve as well.

As usual, you'll find the download information on the Groovy download page.
The Maven artifacts may be delayed a little as we have issues with their upload on the Codehaus infrastructure, but hopefully it'll be resolved rapidly, and the binary distributions should be up shortly if not already there when I hit "send" (smile)

We're very interested in hearing about your feedback on the Groovy 1.8 beta, as it contains some experimental code regarding performance improvements for primitive int arithmetics, and we would love to have a maximum of users trying these new aspects, to iron out all the possible issues that may surface.

Thanks a lot to all those who contributed to this release!

Looking forward to your feedback, and keep on groovying!

The Groovy development team is happy to announce the joint release of Groovy 1.7.5 and Groovy 1.8-beta-2.

Both releases contain several bug fixes and minor improvements, but I'd particularly like to highlight two new features of Groovy 1.8-beta-2: closure composition and the new extended DSL capabilities. Make sure to have a look at the new features from the previous beta of 1.8 too, if you haven't had a chance so far.

If you recall your math lessons, function composition may be a concept you're familiar with. And in turn, closure composition is about that: the ability to compose closures together to form a new closure which chains the call of those closures. Here's an example of composition in action:

def plus2  = { it + 2 }
def times3 = { it * 3 }

def composed1 = plus2 << times3
assert composed1(3) == 11
assert composed1(4) == plus2(times3(4))

def composed2 = times3 << plus2
assert composed2(3) == 15
assert composed2(5) == times3(plus2(5))

// reverse composition
assert composed1(3) == (times3 >> plus2)(3)

To see more examples of closure composition and reverse composition, please have a look at our test case.

Groovy 1.8-beta-2 features the great work of our Google Summer of Code student, Lidia Donajczyk, who worked on an extension of the command expression notation (also known as GEP-3 / Extended Command Expressions). In a nutshell, Groovy allows you to omit dots and parentheses for chained methods calls, so that such calls look more like natural language sentences.

A few sentences this new DSL capability will allow you to write:

move left by 30.centimeters
sell 100.shares of MSFT
take 2.pills of chloroquinine in 6.hours

I've blogged about extended command expressions already, if you want to have some additional examples of sentences you can write, and you can have a look at the various examples published on the Groovy Web Console which also demonstrate how to construct such DSLs.

You can have a look at the JIRA release notes:

You can download those Groovy versions from the download area. And as usual, the artifacts will be sync'ed up with Maven's central repository.

Thanks a lot to everybody involved in those new releases.

The Windows-Installer for Groovy 1.7.4 can now be downloaded from the Groovy Website (direct link). It takes care of the gory details of a Windows installation, copying files, setting environment variables and file associations.

It contains the Groovy 1.7.4 Binaries, API Docs and a PDF snapshot of the Wiki, the native launcher, easyb 0.9.7, Gaelyk 0.4, Gant 1.9.3, GMock 0.8.0, GPars 0.10, Griffon Builders (0.3.0 compatible), GroovyServ 0.3, Scriptom 1.6.0, Spock 0.4. The installation of everything but the binaries including the native launcher is optional.

Currently supported languages for the installer are english, german, spanish, french and brazilian portuguese.

This is with great pleasure that the Groovy development team is happy to announce the joint releases of Groovy 1.7.4 and Groovy 1.8-beta-1!

Groovy 1.7.4

Groovy 1.7 is our official stable branch, and 1.7.4 is a new minor release of that breed.

Among other things, we fixed a few issues with automatic reloading when using the GroovyScriptEngine, with the joint compiler, with some minor syntax issues with Enums. We added a few new GDK methods like File.renameTo(String path), minus and intersect for sets, etc. And we have new option in the Groovy swing console to compile scripts -- versus running them right away.

You can have further details on Groovy 1.7.4 in the JIRA release notes.

Groovy 1.8-beta-1

Groovy 1.8-beta-1 is the first drop of what the next major version of Groovy will be -- we plan on releasing 1.8-final at the end of the year.

From a practical Groovy developer perspective, we've decided to move to Gradle for our build, thanks to the help of Hans Dokter. This release was still done with Ant, but our final build should be ready soon for prime-time, and we're also seizing this opportunity to work in parallel on making Groovy more modular. Some early work towards more granular Groovy JAR(s) have already started on modules for JMX and BSF, as first experiments.

In this first beta, we obviously included all the bug fixes and minor enhancements from the 1.7 branch. And we've been working on new features as well:

  • closures are now "callable" (inheriting from java.util.concurrent.Callable)
  • new AST transformations like
    • @Log to inject a logger in your classes
    • @ScriptField for creating a field in a script (should be renamed to @Field in the next beta)
    • @PackageScope now working also on methods and classes (not just fields as before)
    • @Synchronized for providing safer synchronization semantics
    • @InheritConstructors to inherit constructors, like often the case when extending exception classes
    • @IndexedProperties to add JavaBeans indexed property support
    • @AutoClone providing automatic cloning support to your beans
    • @AutoExternalize providing automatic externalization of your POGOs
    • @Canonical adding proper equals(), hashCode(), toString() methods
    • @EqualsAndHashCode adding an equals() and hashCode() method
    • @ToString for creating a default readable toString() method
    • @TupleConstructor for adding a tuple constructor
  • an additional syntax for strings, with $/.../$, to circumvent various escaping corner cases, like for example $/a/b\c$$ $//$
  • new GDK methods like Map.countBy{}, Map.collectEntries{}, Date.putAt() (subscript operator), Date.updated()
  • + obviously all other incremental improvements and new features from the Groovy 1.7 branch like
    • the new String methods like tr(), stripMargin(), stripIndent(), (un)expand(), 
    • Map's withDefault{} method, 
    • Closure's ncury() and rcury()
    • Sql's withBatch{} and withTransaction{}

A feature I'd also like to highlight in particular is "closure annotation parameters". In Java, there's a limited set of types you can use as annotation parameters (String, primitives, annotations, classes, and arrays of these). But in Groovy 1.8, we're going further and let you use closures as annotation parameters – which are actually transformed into a class parameter for compatibility reasons.

Closure annotation parameters open up some interesting possibilities for framework authors!
You can have a look at the JIRA release notes for Groovy 1.8-beta-1.

You can download Groovy 1.7.4 and Groovy 1.8-beta-1 in the download section of the Groovy website.

Thanks a lot to everybody for their contributions and involvement in those two new milestones!

Groovy 1.6.9 released

After Groovy 1.7.3 on Monday, this is time to release Groovy 1.6.9 as well.

Groovy 1.6.9 will be the last version of the Groovy 1.6.x branch, and we'll now focus on the 1.7.x and Trunk branches from now on.

The key highlight of this release is the JDK 1.4 support, as Groovy 1.6.8 had issues running on JDK 1.4. Fortunately, this is fixed now, and 1.6.9 is the last version of Groovy running on that old JDK.

I advise all those still on 1.6.x and JDK 1.4 to upgrade rapidly to a newer JDK, as even JDK 5 has been end-of-lifed recently.

You can download Groovy 1.6.9 at the usual place:

And find the JIRA release notes here:

Thanks a lot for your attention, and have fun with Groovy!

Particular thanks to Paul and Roshan for resolving the issues surrounding the JDK 1.4 "retrotranslation" issues we've had.