seamjava-ee-6cdiseam2seam3

What will probably be the biggest changes (losses) switching from Seam 2 to plain JavaEE 6?


Question pretty much says it all, though explicitly I'm looking for the things I will probably miss about Seam 2 in a Java EE 6 environment ("losses").

For my latest (small) project JavaEE 6 or more specifically JSF 2 was a fix requirement, so using Seam 2 wasn't an option (and won't be). Even though some people said to get Seam 2 working with JSF 2, I never made it. So far I've only used Seam 2 and I fear switching to a plain JavaEE environment poses more of a problem than I'm currently aware.

The project has the following basic/core requirements:

The rest will be rather GUI-based, search forms, client validation etc. which will be handled be RichFaces 4 and JavaEE 6 bean validation. There are no web services, no restful URLs, no messaging, no emailing.

I can see that using Seam security would defintitely be a loss, but I'm not sure about what Seam persistence, the entity/query framework, JBoss EL, and others would be, especially the overall programming model (navigation, EL, beans). Note that we will be able to add Seam 3 modules when it makes sense, so you might include Seam 3 in the discussion in the "gains" section.

So, can anybody clear this up a little? (it doesn't have to be a complete wrap-up, whatever springs to your mind, go ahead)

PS: I wasn't able to connect to the Seam forums so I felt I needed to ask here.


Solution

  • What I can tell you - with a background of various Java EE 5 / Seam 2 and Java EE 6 / Seam 3 applications:

    There is nothing that you cannot solve with Java EE 6 / Seam 3, and many things feel much more mature (e.g. typesafe CDI is way better than Seam 2 string-based components, JBoss AS 7 is so much better than all other releases).

    But: While Seam 2 is more like a one-stop-solution for all requirements you might encounter in an enterprise web application, with Java EE 6 you'll almost certainly end up with more puzzling from different modules.

    Seam 3 is an excellent start, but it's not exactly production-ready, at least not in all parts. So you will have to deal with problems and exceptions that still have to be solved. That's certainly a difference to Seam 2.x, where the road felt pretty good paved.

    There is no equivalent to Seam 2's integrated navigation / pageflow concept. You either have to use JSF 2 navigation, or integrate Drools or something like this - on your own.

    Nested conversations is something you might have liked in Seam 2. There is no such thing in CDI - but OpenWebBeans / CODI offers a nice solution as a CDI extension.

    All the GUI stuff (pdf, mailing, reporting) is on its way in Seam 3 - but not 100% ready yet (9/2011). That will change in the next time - but right now, you're on your way with alphas and betas.

    Having said this, here is my advice:

    Switch to Java EE 6 / CDI as soon as possible (and arguable). It's so much the future. :-)