Java News from Friday, June 17, 2005

The Apache Software Foundation has posted the first beta of Maven 1.1, an open source build tool for Java that's more declarative and less procedural than Ant. Maven is also much more authoritarian and less configurable than Ant.

This release focuses on the following objectives:

With just a few exceptions, Maven 1.1 is backwards compatible with Maven 1.0.

For a full list of changes, please see JIRA.

I've been using Maven lately as part of my work with the Jaxen project, and it has some nice features; but I really can't recommend it. It's too controlling. If your build process doesn't look like what Maven wants it to look like, you're going to be fighting against it. Maven's probably a little easier to set up than Ant for basic tasks like build, test, and deploy. However, as soon as you want to do something a little different than Maven expects, you're S.O.L. It's really Maven's way or the highway.

The Apache Commons Project has released Jelly 1.0. "Jelly is a Java and XML based scripting engine. Jelly combines ideas from JSTL, Velocity, DVSL, Ant and Cocoon all together in a powerful scripting engine. This is the first stable release of Jelly. It can be used as a standalone application to run scripts, or incorporated into your Java applications." I looked at Jelly when I was trying to integrate Cobertura into the Jaxen build process, but gave up fairly quickly. There are simply too many scripting languages out there today. Even if each of them has their own nice features (and it's not clear that Jelly does), one person can only learn so much. At last count besides Java I was also struggling with AppleScript, Python, Ruby, Perl, JavaScript, JSP, PHP, XSLT, VBA, and probably a few others I've lost track of. I don't know why language design seems to be such a tempting target to so many developers. Can't we resist the urge to create yet more languages with ever diminishing shares of an increasingly fragmented market?

Apparently not. One fork of the Groovy Project has posted a new version of their scripting language, jsr-02 or some such. I suppose creating an incompatible, unfamiliar language isn't exciting enough. They also need to use a new versioning scheme too. I have no idea how this relates to previous versions of Groovy or an eventual 1.0 release that may or may not ever happen. According to Guillaume Laforge, jsr-02 "is a very important milestone, I should probably say a quality-focused release. We've reached 1000 test cases, and counting... But apart from the usual user support, bug fixes, applied patches provided by our active and vibrant community, we particularly focused our efforts on two main quality factors: better error reporting and improved compile-time checks." 1000 test cases really doesn't impress me. XOM has over 1300 test cases, and it's a much less ambitious project. If Groovy's only got a thousand tests, no wonder it's having trouble.