PUBLIC OBJECT

GuiceCon

Today I participated in GuiceCon, a small get together of Guice developers and users. Here's a quick disorganized rundown of some observations and reactions...

Too much rope. Guice's circular-dependency proxies and just-in-time bindings save developers from boilerplate. But these features have complexity costs. Almost everyone agreed that the benefit wasn't worth the complexity.

PrivateModules fail. They're nice in theory but the poor interaction with just-in-time bindings prevent them from being nice in practice. It's too bad.

SPI win. Everyone is using the Guice SPI to improve their app. Many teams are using them to do extra analysis of their modules. Sonatype are even using TypeListeners to host other containers. I think the SPI benefits by staying out of your way when you aren't using it.

Too little rope. People want to inject the injection point. It's a scary cat to let out of the bag, but one that could be put to tasteful use in some situations. When it's used tastefully, it will save people from a lot of boilerplate. This issue will be under debate for the next rev of Guice.

Building bindings recursively is lame. Miniguice discovers required bindings using a queue. This approach was warmly received. This would be a nice - if risky - improvement for a future rev.

Multibindings SPI win. All aspects of the SPI are getting exercise, even seemingly exotic SPI features like the extensions SPI. These were added to scratch our own itches; I'm pleased to see they're general purpose.

JSR 330 win. Crazybob's dependency injection JSR is powerful and svelte. You'll soon be able to use it to inject plugins throughout your tool chain: Eclipse, Maven, and Hudson.

We also discussed some non-Guice stuff...

Xtext is very well done. This Eclipse.org project makes it very easy to create powerful Domain Specific Languages. They have an extremely powerful model for defining a language, navigating the corresponding AST, and building integration into the Eclipse editor. Very powerful stuff. Xtext uses Guice in its API.

Hudson lives. I can't say anything about Jenkins, but it's clear that Hudson is still progressing. The project's maintainers are working on stability and structure. Works for me.

Sonar for Hudson looks very good. Hudson's default test reporting is clumsy. Sonar is better. I'll be looking into this next time I'm working on my project's build.

OSCON Java is a Portland, Oregon conference that looks very good. Java folks need a conference that's focused on them; now we have one.

GuiceCon was fantastic. I'm thankful to Van, Dhanji and Jason for putting it on and to Sam and Fred for travelling cross-country to present.