Good answer Robert. Here's a couple of additions... From: "robert burrell donkin" <[EMAIL PROTECTED]> > 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 executed. > 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 digester. 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...) James ------- http://radio.weblogs.com/0112098/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
