The first day of Devoxx 2010 for me boils down to a nice comparison between the JBoss and SpringSource camps. I attended 2 different 3 hour sessions today:
⁃ Seam 3 State of the union
⁃ Increasing Developer productivity with Spring Roo
To be simple, my comparison boils down to this:
The folks at JBoss can make something complex more complex and can make an overly complex standard somewhat manageable. The folks at Spring Source make a Developer’s life easier, get out of the way if you want them to but completely ignore any standards.
I’ll compare the two presentations both on content and on presentation.
The start of the day had the session about Seam 3. At our company we’ve been programming with Seam 2 for more than 2 years, so I am somewhat familiar with the toolset. I’m not up to speed on the latest specs and techs, so a State of the Union approach sounded ideal. It turned out to be less than that.
The 2 presenters started up fast and went through a lot of material immensely rapidly. They were going through the Seam modules really quickly, but were not doing it at an introduction level, but at an advanced in-depth knowledge level. I’ve worked with Seam quite a bit, but unfortunately I was lost on several occasions. The only real and interesting demo that we were given was to generate a Seam application, but that didn’t run.
The Spring talk was an entirely different matter. It was completely riddled with real code running and real development being done on stage. The presenters told us what they were going to do up-front, had a few slides about their topic and then showed us a nice working demo of the things they just showed. They had quite a few technical difficulties, but those were all on account of the organization of Devoxx. In the end, they managed to present things in an interesting fashion.
The heart of the matter – Seam
After attending quite a few conferences and seminars in my presentations I have had to learn to read through the style of a presentation and judge the content itself. The Seam folks have given us a way to make the JSF specification somewhat manageable in the past and it was quite important for me to get a hold of their State of the union. We will want to switch to their latest tools in the near future. I take quite a few interesting and some quite boring points home from their presentation.
SeamFaces will keep helping us out where the JSF 2.0 standard still hasn’t managed to plug all of the holes that JSF 1.0 introduced. Dependency Injection and Expression Language can be used in all of the places you would really expect. Running actions when a view is run is still possible and they managed to find a good way to integrate POST-REDIRECT-GET working with JSF. I’m glad for their hard work on this, but the main question of course is: Is there nobody with a brain on the JSF specification board? A very good tip from Dan was to have a look at PrettyFaces if you are tired of all of the plumbing code that you need for JSF. Will definitely have a look at that then!
The second interesting addition seems to be SeamCatch. Basically this is a good way to handle exceptions throughout your application. It allows you to declare globally what Exceptions to catch and then what to do with those. It also automatically unwraps the Exceptions so that you can directly get to the core of the problem. This promises to make our log files 25-fold smaller in case of a Database failure or something of the kind. Good stuff!
Of course it wouldn’t be a JBoss presentation if they didn’t present something that I am completely baffled by. They showed off a way to making all of your logging a lot more kludgy and a lot more complex. Their assumption is that you will be reusing your log messages a lot throughout your code and that it really needs a type-safe framework. The presenters showed us how to add 5 lines of code to every log line, like logging wasn’t something that already takes way too much time anyway. Thanks for that guys, get a real job I would say.
There was promise in one last part of their presentation, but that remains a promise and is still under heavy development. The Seam folks have realized that SeamGen really doesn’t cut it and are working on it’s successor, SeamForge. It looked interesting, but the demo never made it any farther than creating some domain classes. The actual user interface never ran and of course the usual comment was added “it usually works fine. Really, trust me!”
The heart of the matter – Spring Roo
The Spring guys of course had a big advantage, they only had to demo their version of code generation, Spring Roo. They didn’t need to introduce Spring MVC, Spring Web Flow or any of that, since they had cut the presentation down to just Spring Roo. It turns out that that makes for far more interesting listening.
The presentation was good, but the content of it was very interesting as well. Spring Roo is a code generation framework that allows you to create Spring MVC applications from a database schema or a domain model. This sounds good, but there are so many crap implementations that I wasn’t quickly impressed. It looks like they have quite a few of the details covered and I was happy to learn that Spring Roo:
⁃ Supports customization of the user interface layer in a smart way
⁃ Allows you to regenerate your application once your db schema changes and they promise to keep everything intact
The thing with the Spring guys is of course their complete disregard of standards. Sure you could theoretically implement a JSF user interface layer add on for Spring Roo, but let’s not kid ourselves: that will never make it. The application runs in a servlet container, so things like EJBs are not a concept that will see the light of day in a Spring Roo release soon. Is that a bad thing? I’m not sure. They scared the hell out of me a few years back when they were suddenly going closed source, but that all has turned out quite all right. They make great stuff, but I’m on the fence.
Anyway, Spring Roo sounds like something I must check out, I guess I’m spending a few evenings coding in the near future. Seam and in particular SeamFaces and SeamCatch I will also have to dive into, it will make my day job easier if we can upgrade to this new version of Seam it looks like. SeamForge I am not so sure about.
I have one more session today, about Mylyn, but I must say, I am really looking forward to tomorrow. I hope to learn a lot more about the Java EE 6 spec. I am really behind and I know it, so maybe some of the stuff from the Seam presentation will land better once I’ve seen that.