Yee CN schrieb:
Hi Andrew,
Can you please share your experience with SEAM? It is production ready?
I heard something like that it is hilariously slow in starting up…
I am not Andrew, but I can comment a little bit.
First both Seam and Shale are beta, so if that is an issue stay away.
Secondly both are developed by really experienced experts in their fields.
But now for Seam, don't even bother with the beta release, it has too
many bugs, go straight for the CVS version. Besides that I did a small
program with it and was very impressed, the thing I did seemed to be
relatively bug free in its base (Seam), but I cannot say how it scales
to a big program.
Seam has the disadvantage it is an all or nothing approach you basically
have to use the foundations, while Shale basically as I saw it does not
force you to anything.
The plus sides of Seam is that it is definitely a huge lines of code
saver, with many things done implicitly by the framework which normally
add a certain code overhead.
The downside is, that the project setup and deployment currently is
somewhat quirky, either you program into one of the example programs as
a starting place or you will have a rough time to get the correct
project and library layout upfront.
As for real world experiences in bigger projects, probably you should
ask in the Seam forums on jboss.org, but have in mind, this stuff is beta!
Is there any gotcha? I had a quite look at it a while back, and find it
quite interesting, although I was a bit turned off by it heavy lean
towards ejb3. I find raw JSF painful to use – and I am seriously
Well seam basically is JSF interwoven with EJB3, the thing is, basically
every session bean becomes automatically a backend bean, so you program
the entire backend code all three tiers in EJB3. If you do not like that
stay away.
Also using ejb3 entity beans is implicitly forced upon you because you
get all the benefits automatically, like injection of the entity
manager, transactional handling.
Seam adds to the mix injections of jsf contexts, handling of datalists
data injection on the backend side, and a really interesting scoping
with a @begin and @end annotation.
So if you do not like ejb3 you definitely will not become happy with
Seam at all. After all Seam is a jboss baby, and they also have a
financial interest into pushing EJB3.
(Which in case of Seam is really forgivable, because it really brings a
lot of new stuff to the table)
Seam has the huge advantage that you get way less xml than with pure
JSF, but there are many things which also can be achieved by other means.
I will give you a small comparison:
Annotated backend beans, this is stuff currently unique in Seam, but
that soon hopefully will change.
Scoping and dialog mechanisms: You get that in shale dialog, and with
t:saveState in the Tomahawk extensions (the t:saveState is probably the
easiest to use, because you just have to set a control, while Shale
needs another XML file describing the dialog flow)
Binding into EJB3/Hibernate you can achieve some of this stuff also with
Spring which allows transactional handling, also with annotations if you
want instead of XML (Spring has Transactional annotations optionally)
All of this is still a tad more painful (except saveState) probably, but
if you do not want to go with EJB3 or with some beta stuff, it is
another option to the whole mix.
considering migrating to one of the combinations you mentioned once I
got a chance to do so.
There are millions of ways to combine things, that is a huge strength in
the JSF world, the people who did the standardization by far did not a
perfect standard, but it is very good in being open, alterable and
expendable.