The purpose of this document is to give you the fastest possible introduction to Barracuda, so you can decide whether or not you should bother learning more. Time is money, so let's cut to the chase...
Barracuda is an open-source Presentation Framework designed to make it easier to build servlet based webapps by applying proven client-server patterns to the web development paradigm. Key features include:
DOM based templating mechanism for
better separation of code from content (default implementation uses
The basic idea is that you compile *ML templates into DOM objects, which
can then be manipulated programmatically--you insert the data and then
render the DOM. This yields clean separation of code from content.
UI component model that provides a
series of server side widgets (table, list, template, etc) that make it
easy to manipulate DOM structures. Strongly typed MVC
interfaces just like in Swing. Support for multiple markup languages
(HTML, WML, XML, etc). The basic idea is that you can use components to
do the DOM dirty work--you put your data into the components, and let
the components render it into the DOM. Components support URL rewriting,
disabling the back button, and much more. Some components even allow you
to add event handlers to them so that you can be notified when something
happens on the client. Cool.
Event model that provides Model
2 style flow control and allows for true event driven
programming on the server. You can add listeners to components and your
server-side event handler code will automatically get notified when an
action occurs on the client. The basic idea here is that event driven
programming makes for looser coupling with higher cohesion--the
Barracuda event model makes it possible to use events in a web paradigm.
You can easily control program flow, and event hierarchies can be
generated declaratively via xml. You won't find a more flexible,
powerful approach to events out there.
Form mapping and validation framework
that makes it possible to easily convert HTTP Request form parameters
into first class Java objects and validate them.
Localization mechanism that extend the
XMLC compiler to make it really easy to localize DOM templates and then
load them based on target locale
Barracuda builds using
Ant 1.5.1+, and includes
several custom taskdefs to streamline the development
Based on the
Servlet 2.2+ API
(so it'll run in any decent app-server). A few features of the servlet
2.3 API are utilized, but these are optional, allowing Barracuda to
continue to run in servlet 2.2 only engines.
And of course it's available as open source under the LGPL! ;-)
While many frameworks claim to be everything to everybody, we'll be real honest and try to save you some time up front:
Barracuda isn't for everyone, because everyone's needs are different. Barracuda flies under the radar because it is different too. We didn't build it to try and be like everyone else - we wanted to think freshly about how we build webapps, about the architectural implications of the webapp paradigm. If you find yourself thinking about the the architectural issues that make webapps a pain to build and maintain (particularly for large scale apps), Barracuda might just be for you.
For more details, start with the big picture - source is available under SVN, binary downloads are available, there's a fairly large user base, a mailing list to ask questions, lots of documentation, sample apps, yadda, yadda, yadda. Make yourself at home and don't hesitate to ask if you have questions.