commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <>
Subject Re: [Digester] [Jelly] Features comparison and/or differences
Date Tue, 28 Jan 2003 09:32:42 GMT
Good answer Robert. Here's a couple of additions...

From: "robert burrell donkin" <>
> here's how i see it:
> digester is an easy way to develop SAX-based content handlers. given
> enough ingenuity (and effort), you can make just about any xml->object
> mapping you like. it's (usually) used to create object models from xml.
> you could create custom rules that execute code but that's not really it's
> focus.

Also there's Betwixt which acts in the opposite direction to digeser, taking
beans and generating XML or SAX events. Plus betwixt can sit on top of
digester and auto-generate digester rules using bean introspection.

> ant is a java based build tool. ant build files are in xml format. the
> contents of the build file determines which build tasks should be
>   the xml has a fixed format for extensions via new taskdefs. ant maps xml
> to objects internally but it's focused on being a build tool rather than
> on general purpose mapping.
> jelly is a tool for turning xml into executable code - and so it's more
> like ant than digester. it can be extended by creating custom tags
> (similar to jsp custom tags). it's more flexible than ant since it's
> intended for general purpose scripting rather than just building.

Agreed. Indeed Digester, Betwixt and Ant can all be used within a Jelly
script, as can any BSF scripting language, XSLT and all other wacky kinds of
things. So you could think of Jelly as a kind of XML engine container. Ant's
focus is a build tool and built asks, Digester's focus is turning SAX events
into beans or method calls, betwixt is mapping beans to and from XML using

Jelly is a more generic framework that can be used for various different
things such as

* building and scripting (e.g. as a flexible front end to Ant such as its
use in Maven),

* a unit testing tool (e.g. JellyUnit, Latka and Anteater - indeed Jelly can
unify Latka, Anteater, JellyUnit, xmlunit, schema validaiton, XPath
validation as well as database unit testing together in a unified XML
language which integrates cleanly with JUnit)

* a workflow definition language (like in Werkflow).

* a rich user interface builder using XML markup (JellySwing, JellySWT and
who knows, maybe XUL one day too)

* as a templating engine (e.g. a recent patch by Tim Harrison to implement
the generation of SQL statements in commons-sql using Jelly)

There are various other diverse uses that keep popping up from time to
time - e.g. drools uses it to define rule bases, some Struts folks have
investigated using Jelly as a simple controller or action language - maybe
the commons-workflow and jelly could be integrated one day too. Ultimately I
hope to use Jelly to extend Maven's forthcoming continuus integration tool,
Continuum along with Werkflow to be an integration testing tool for
distributed web applications, MOM systems and web services (more on that
another day...)


View raw message