I've been developing web apps for 4/5 years and since my first approach i always have had concerns about separation of task as i've never loved to produce fancy html code.
I even don't consider myself a web designer nor have the skills a web designer should have, so i have worked on other's html codes.
That's make me look for tools or framework that make my life easier and came across XMLC from Enhydra (formerly owned by Lutris) then learn Barracuda . Since then i've always used Barracuda/XMLC to build up my web apps then lately i hit Tapestry and want to look at it more deeper just after reading some spots on it.
Well Tapestry and Barracuda have a lot in common while still have a lot of differences, their main approach is similar since both leverage a lot on components.
Barracuda provides just the core components useful for every app since the embrace all the typical html tags/object, the barracuda's components model is tight to DOM api and i guess this is the main reason why it has not been so extended by the community (DOM api looks complex) like tapestry one, but the use of DOM api enforce a clean an good separation of tasks from web designers to web developers and i like it very much.
Tapestry components could have their on html templates which is a "good thing TM", more separation and more isolation.
Tapestry components model is specifically designed to be extended and to provide powerfull ways to build components while Barracuda components model is designed to be used and (probably) extended by Barracuda's core developers only
Another things to note they have in common is the use of external file for page specification, .page within tapestry .directives (my own name) within barracuda, where developers put logic binded to presentation objects, barracuda use standards "id" attribute to bind page directives to html tags while tapestry use "jwcid" attribute so from a web designer point of view barracuda makes it simpler to develop web pages you can use any kind of WYSIWYG editor. Tapestry support another kind of binding components that they call implicit which are completely declared in the html template, this way a web developer with some capabilities of web designer could speed up a lot the work necessary to start a project or could use this features if the "project" is not so big, thinks about the quickness scripting language gives to you for small pages. That's a think i like from tapestry.
Tapestry has more of a "complete" framework since it own concept about services and all the features necessary to integrate services together, makes you work with abstract classes cause it's the framework that build up concrete classes at runtime so you don't need to write every single properties a page should have and it's own getters/setters method, the framework does that for you just declare that properties in page specification and you're on.
That's really great about tapestry!
Both have "problems" with friendly url (search engine wise) but in both case you could solve the problem with servlet filter or similar (i've done myself for barracuda and seen from a tapestry developers how to do for tapestry)
My more experience with barracuda make me appreciate some features of it more then tapestry but i'll dig it more with tapestry to understand more this great framework.