Ok, so what is a component model, and why do I need one? Good questions; we'll try to explain.
Any webapp component model generally allows you to do two basic things: first, you can assemble complex components out of simpler ones; second, when you render the root component all its children will be rendered as well.
The Barracuda component model goes further and provides strongly typed MVC interfaces like you'd find in Swing. This means that instead of extending the component every time you want to use it, you simply implement the component's Model interface. The component takes data from the model and places it into the view.
Unlike Swing (which only defines the Model interfaces), Barracuda components also define View interfaces. In most cases a view will correspond to some element in a DOM structure (sometimes called "binding" a component to a DOM node). This allows the component to take the data from the model and insert it into the DOM structure for you. This means developers no longer have to manipulate DOM structures by using the DOM interfaces (tedious). Instead, you manipulate components and the components take care of all the dirty work.
Here's how it all fits together. In the past, developers could compile HTML pages into DOM objects by using XMLC 2.2+. This made it possible to dynamically insert data into a web page using convenience methods provided by XMLC generated classes. While this worked well for simple data fields, it was still too cumbersome for populating complex structures like lists and tables, because developers had to manipulate the *ML using low-level DOM interfaces.
The Barracuda component model gives you the ability to bind a component to a node in any DOM structure. When the component needs to render itself, it queries the model and automatically inserts the data into the DOM structure for you. This makes it very easy to populate complex structures (lists, tables) in any DOM structure.
In addition, certain Barracude components (BAction, BLink, BSelect, BInput, and BToggleButton) are capable of generating events on the client side. These components allow you to add server side listeners directly to the components (just like you would in Swing). When the action occurs on the client, your event handler code on the server is notified. This is the only real tie between the component model and the event model portions of Barracuda.
One of the easiest ways to get started with components is by using the BTemplate component. This component populates the DOM by looking for tagged values in the template and queries the model based on key name, rather than model position. This means all a developer has to do is provide data for various keys; all the designer has to do is refer to the data by key name -- the component will substitute accordingly. This makes it very easy to restructure the *ML document without requiring the developer to make changes to the component or the model.
For details on how to use the Component Model, refer to the Component Model - 30,000 Ft Overview and the Component Model Tutorial.