WTF
"makes the notoriously complex Java easier to work with"
As an ex Java developer, you completely lost me there.
Google has published code for Java to reduce the amount of hand coding needed for commonly occurring or popular features in applications. The search giant has slipped out its Google Collections Library 1.0, extending Sun Microsystems' existing Java Collection Framework. The code has already been tested in Google's GMail, …
As a Java architect/designer/developer I've only had problems working with poorly written user code. One of the beauties of Java is its simplicity. Provided you can grok OO.
And as for Google Collections, it's not exactly new, you know. It's been kicking around for some time. Although perhaps not as a 1.0 release, probably more as a beta.
Does this mean that Java supports generics/template classes but does not deliver implementations of standard things such as List<T> and Dictionary<TKey,TValue>? Of course the language should be separate from the libraries but if Google thought it necessary to create their own then either the standard implementation is not that good or does not exist.
In either case it means that people developing Java code must either rely on third parties or write their own and my problem with this is you eventually come to a point where project A uses one set of libraries while project B uses another and when projects A and B meet you have to jump through hoops converting.
What I like about C# is that if I want a list of strings then I am very likely to use the standard .Net List<String> and chances are that almost every other C# developer will do the same. This means when C# project A meets B it all just works. Of course trying to get it to run on other platforms is another issue.
Java supports generics, and has done since version 5 - the one targeted by this library. Briefly scanning the list of class names in Google's library, for the large part they seem to serve the same purpose as the ones in the concurrent package that comes as standard with the Java runtime.
Iggle, Java already has those things of course.
The java.util.List interface - http://java.sun.com/j2se/1.5.0/docs/api/java/util/List.html
The following classes which implement it: AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector
You can create a List<String> using the standard Java libraries.
And the class java.util.Dictionary - http://java.sun.com/j2se/1.5.0/docs/api/java/util/Dictionary.html
And many other basic types.
I agree with others disputing "makes the notoriously complex Java easier to work with". WTF to the power of n!
"notoriously complex" - compared to what other language/development/environment? The article author should qualify this statement by comparing it with something else.
On the subject of libraries to enhance the language, take a look at commons.apache.org
Commons collections is basically unsupported. It does not support generics, for example.
Google collections has excellent support for functional programming idioms. I've used it in production code for some time and found it very useful for cutting out boilerplate code for iterating through, mapping & folding collections.