Groovy: First Contact provides a detailed look at Groovy’s features and Mike Spille’s likes and dislikes thereof. Here was my comment about the review:
Excellent post, indeed.
I think it’s important for Groovy to have a Java-like syntax, because that makes it easier to move back and forth between the two languages. I also agree that having more than one way to do things is the slippery slope to Perl (resulting in write/execute-only code — don’t try to read it).
But, if Groovy is *too* close to Java, as I think BeanShell is, you lose part of the reason to have a scripting system at all. The “->” and “.” thing seems like exactly the kind of thing that will throw Java folks off at first, but is useful when you’re trying to quickly put a script together. The optional parenthesis and semicolon can be nice for interactive use of a Groovy command line.
I haven’t looked under the hood, but I wouldn’t be surprised if operator overloading is used to provide some of the conveniences for Maps and Lists. Sure, you’ll have someone out there trying to multiply a GIF image by a JDBC ResultSet, but that’s really their problem. If someList.add(“foo”) can be replaced by someList + “foo”, I think that’s a win in a scripting language.
This article is the best one I’ve seen so far for giving people an idea of whether or not Groovy is for them.