There are two aspects that make Seam easy to jump into.
When you are first learning a framework, you want to get something running quickly so that you can see it working and so that you can "pull on the levers" so to say. seam-gen steps you through a series of questions, after which it sets up a working Seam project which can be deployed to JBoss AS (and with slight modifications to GlassFish). If you want an even faster way to get started, go grab the Seam in Action source code and run "ant quickstart". That command will download JBoss AS, download Seam, build a sample database, and let you select a project to deploy.
Before moving on to the next point, I want to make a personal comment about seam-gen. Look, it isn't the best project generator in the world and it certainly doesn't create the "perfect" project scaffolding. What it does do is give you a path to testing out Seam with the least amount of resistance. Over time, seam-gen will improve, or you will perhaps outgrow it. If you don't need seam-gen anymore, then you should be happy to know that you have likely become a skilled Seam developer.
#2. The @Name annotation
If you have used JSF before Seam, then you know that defining a managed bean file in XML is a real pain. In Seam, you create a class, add the @Name annotation to it, and you have a component you can access from JSF (expressed using the EL). But it goes beyond establishing this mapping. That component can now be wired to other components using the @In annotation, again saving you from the XML-based wiring required with JSF managed beans. The component can also be placed in one of Seam's six scopes (event, page, session, conversation, business process, application). The Seam services available to your component then extend from there.
In another thread I mention the things that are tough about Seam. I cite JSF, bijection, and conversations. But these things are by no means a high bar, more like a new way of thinking.
Very little configuration needed. Typically things like persistence.xml, faces-config.jml, and web.xml rarely change after seam-gen (so you can copy and paste into new projects). There may be some changes to components.xml as your application grows, but that's one configuration file instead of three plus.
It stays out of your way. As Dan mentioned Seam uses a lot of annotations. That's about as much as you see from Seam. Seam also doesn't impose any sort of architecture on your project so you're free to use 3 tiers, 5 tiers, two, or whatever your project needs.
Seam makes PDF, RTF, XLS, CSV, RSS, email, and graphic manipulation as simple as a few tags in an XHTML file. I haven't seen anything as easy as Seam for those file generations.
Security. See chapter 15 in the reference, or chapter 11 in Dan's book.
There are others as well, these are some of the big ones that I have noticed.
Joined: Mar 05, 2003
Good additions Jason. [ October 10, 2008: Message edited by: Dan Allen ]
You'll find that security with Seam (e.g., page-level and component level restrictions) are fairly easy. Using the Seam Identity object, you addRole() at session startup (after successful authentication), and hasRole() to check to see if the current user can do this or not.
configuring page navigation in the pages.xml is fairly easy as well.
honestly, Seam has lots of easy concepts and lots of difficult ones as well.
SCJP 1.4<br />SCBCD 5
Joined: Mar 05, 2003
What's makes Seam security so important is that page-level security is otherwise not possible in JSF (without creating your own PhaseListener and lots of custom code).