There are two aspects that make Seam easy to jump into.
#1. seam-gen
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.