Maverick is a Model-View-Controller (aka "Model 2") framework for web
publishing using Java and J2EE. It is a minimalist framework
which focuses solely on MVC logic, allowing you to generate
presentation using a variety of templating and transformation technologies.
In principle it combines the best features of Struts, WebWork, and
Maverick is simple to use - this is a minimalist framework that anyone
can understand easily. This is not a "kitchen sink" framework
that tries to provide everything you need to build a web
application; there are plenty of great database connection pools,
application servers, validation frameworks, templating languages,
etc already out there.
Maverick is simple to understand - the code is easy to understand,
there's not a lot of it, and it's designed with pluggability
and extendability in mind. The idea of a Controller that builds
a Model that gets rendered by a View is very simple and
straightforward, so the framework should be too.
Maverick is agnostic about view technologies - you can use any templating
engine you like with Maverick. Examples are provided for JSP
(with JSTL - no need for special tag libaries), Velocity,
and Domify/XSLT. The developers of Maverick actively use all three
of these in their "real life" to build web applications.
You can run your view output through a pipeline of transformations.
Maverick-supplied transformations include XSLT, DVSL, "wrapping" layout
transformations, FOP, and Perl. You can efficiently chain many
transformations of various types together, and you can specify
this on a per-view basis. Of course, transformation technologies
are pluggable and you can easily define your own.
In addition you can halt the transformation process at any point
and output the intermediate content. If you're using XSLT, this
is a great way to produce static XML and build your templates
offline with standard tools.
Your commands, controllers, views, and transforms are configured
with an easy-to-understand XML sitemap. For even more flexibility,
you can preprocess it with XSLT.
Maverick will automagically pick from different views based
on user language, browser type, or any other characteristic
of the request. Of course, this behavior is pluggable.
Maverick supports both Struts-style singleton Controllers
(aka Actions) and Webwork-style "throwaway" Controllers.
Maverick is multi-platform; it has been ported to both
Depending on what templating technology you choose, you
may be interested in one or more of the following features:
Maverick can automatically "domify" (or "saxify") arbitrary Java
objects so that XSLT can be used without the effort and processing
overhead of generating and parsing text XML. XSLT can be used
as a templating language directly on your model just like JSP.
For text-based templating engines like JSP or Velocity, an elegant
way to apply a common "look and feel" and layout to a set of views
is to use the "wrapping" transformation. The output of the previous
step is made available to subsequent steps as a String variable
which can be placed anywhere on the page.
FOP transformations allow your application to produce PDF,
Postscript, PCL, and a half-dozen other document formats
An interesting alternative to XSLT is DVSL. This is a declarative
templating language patterned after XSLT but based on Velocity.
If you like Maverick, but also would like to use additional features like
Webwork and Struts provide, you might want to check out
is an extension of Maverick that provides a boosted version of the
FormBeanUser controller. It focusses on fine grained population,
validation and error reporting, has several utilities for things like
formatting output and supports the concept of interceptors.
This is not a framework designed by people who build frameworks; Maverick
is designed and built by people who build web applications for a living
and were disappointed with the complexity and invasiveness of existing
open source tools.