What will probably be the biggest changes (losses) switching from Seam 2 to plain JavaEE 6?
Question
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:
- Role and permission-based security concept (~50 users)
- JPA 2 transactional persistence
- ...
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
Good and understandable question - I don't see why it got downvoted.
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. :-)
OTHER TIPS
I experienced the same. Java EE is not enough in several cases and it wasn't intended to be. So there are CDI extensions. I learned some days ago that others experienced the same:
If you are a Seam2 user, go with Seam3 (I think they plan to provide similar stuff again - just conversations are very poor) and help them to get it stable, add features you miss,... or switch to other extensions. There are a lot e.g. we prefer MyFaces CODI, because it's very stable and fast and their notion of conversations is better. There is also a very open community and they also help a lot, listen to ideas,...
The question is not "What" it is "When will it be available in an extension". I guess as soon as someone asks for a feature.