Well, it’s spring again, so time for another NLJUG J-Spring event! The NLJUG J-Spring/J-Fall is the biggest Java event in the Netherlands, a one day conference held in Bussum. I am a regular visitor on this conference, interesting sessions, a good indication of the Dutch Java scene, and it’s great to meet up fellow Java developers again. The conference was “sold out” (entrance is free to NLJUG members), but because it was nice weather outside, it was less crowded inside during the breaks than usual.
Data Context Interaction
For me, the conference started out with a talk on “Data Context Interaction” (DCI). Basically, this is supposed to be solving the problem that “typical” object oriented (OO) design mixes all kinds of stuff inside your domain objects. DCI completely separates each interaction, using simple techniques like a decorator, or a full-blown new programming environment called Object Teams (unfortunately, only the latter was demonstrated). I had a bit of trouble with the initial problem statement. In “good” OO principles (like SOLID, for instance), mixing unrelated stuff in the same object was already considered very bad! I agree with the stuff DCI proposes, but I do OO design this way in plain Java for years already, without needing fancy new languages or confusing new acronyms. As a research effort though, I am really interested if something useful will evolve from this new emphasis on a cleaner separation.
Next was a talk on the JSR-299 “Web Beans” specification. Basically Web Beans is the best of Guice and Seam (both inspired by Spring), mixed together in a single Dependency Injection standard. This talk was a real meat grinder, the speaker had little mercy for any listener that did not have intimate knowledge of Seam/Guice, and crammed the entire spec in the talk (and the spec is pretty big). Fortunately, I did know enough about Guice and Seam and managed to keep up the entire session. Web Beans will be great when it’s done (no date is set on that, but not likely this year), especially if it works on Java SE as well. It’s a nice clean spec so far: easier than Spring and Seam, more powerful and complete than Guice.
Pragmatic Model Driven
The revival of model driven development was apparent on this J-Spring too. Jos Warmer did the afternoon keynote on a new framework called Mod4J, which is basically an out-of-the-box DSL and code generation tool to work model driven using predefined DSLs. Another talk by Richard and Tony in the afternoon relied on a more low-tech technique by using out-of-the-box Enterprise Architect capabilities in conjunction with Freemarker templates. Both approaches each have their pros and cons, but both did model driven only for the simple boilerplate code, no ambition to replace coding completely, or rely on very abstract models written by non-programmers. Very interesting stuff, meta-models seem pretty easy, especially in Enterprise Architect, so basically, this stuff relies on easy to understand code generators to be accessible to the average programmer. I talked a bit with some of the model driven guys, but since they have been investigating and experimenting with this stuff for years, to them, everything seems easy.
The demise of the Swing JSRs
Finally, I visited a talk on the JSR-296 “Swing Application Framework” spec, by Karsten “JGoodies” Lentzsch. Karsten is a great presenter and a real Swing guru so I never miss one of his talks. This talk was especially interesting though, because although he did explain the spec, he basically said that it was dead. Sun re-prioritized on JavaFX, and abandoned some important Swing JSR specifications. According to Lentzsch, you’d be better off right now if you roll your own framework for serious Swing applications instead. It’s surprising to hear a member of a spec expert group say: don’t use this spec! Refreshingly honest though, which is loads better than hollow promises of Sun on this subject.
Still, the JSR is a great inspiration for solving common problems, although Karsten pointed out some things he did not agree upon (like resource bundle injection). Karsten did say some nice things about Eclipse RCP too, stating that as the only real alternative for plain Swing for now, interesting to hear from a Swing guru (both Netbeans RCP and JavaFX were mentioned). Finally, he did mention the Eclipse JFace data binding too, as a cleaner and more powerful alternative to the JSR 295 “Beans Binding” spec (dead now, too). Since JFace data binding is pluggable, it can be used outside Eclipse as well, and Karsten mentioned the UFace project (Swing and GWT bindings) as something very interesting to watch in this space. UFace, though, has not released any downloads as of yet, so right now, you have the choice between a JSR that is dead, a new generic framework that is not yet available, or just plain old JGoodies for Swing data binding.
All in all, an interesting and surprising day at J-Spring. See you next J-Fall!