I've just finished getting up to speed with Google's Guice 2.0 and have integrated it into two of my projects. It's been a very comfortable experience and I could see myself Guicifying most of my Java projects from now on.
To summarise my experiences - Guice is a Dependancy Injection and Aspect Oriented Programming framework for Java. This is the turf that's normally owned by Spring of course.
So how is Guice different to Spring?
I think one of the main reasons I like Guice so much is the absence of XML. I really hate XML and Guice's "Module" concept is a great replacement for text configuration. I would be interested to know how often in practice that Spring's XML configuration is changed in situations where a rebuild of the application is impossible. The argument for that sort of configuration has always seemed like a straw man to me. As a bonus of the Guice Module approach, you get type checking and compilation of your configuration. [It would be interesting to see if someone does implement an XML configurator for Guice though - I'd say it's only a matter of time].
How to get up to speed real fast?
Richard Nichols is an Australian software engineer with a passion for good design and simple solutions.
You could follow him on twitter or subscribe by RSS or email.