At 01:57 8/5/01 -0400, Jesse Tilly wrote: >Peter, > >My question is really just a request for further information. Could you >reply with the 3-4 URLs that best describe the parts of the Avalon Framework >you're talking about? A lot of us are probably at a disadvantage from not >working closely with Avalon through design and release, so you may be >thinking "it fits perfectly" whereas I'm thinking "why are we fitting >anything here".
Unfortunately as I noted the how-to documentation is scheduled for post the 11th but the highlevel abstract design principle documentation is available at http://jakarta.apache.org/avalon/framework However I don't think it gets into specifics. I think it should have enough links to describe all principles etc. For specifics I would just browse the code or download CVS and generate javadocs. For the code just look at. CVS repo: jakarta-avalon/src/java/org/apache/avalon/framework >It sounds promising, but I'd like a good synopsis of the features. Thanks. Main features of framework I guess are the following. * It formalizes and implements the "context" pattern as access point between component and container. * It formalizes the notion of hierarchial configuration (that is identical to TOM/ProxyTask model). * It formalizes the ability to "compose" a system from parts. Where traditional J2EE apps use JNDI for this that is waaaaaaaaaaaaay overkill for Ant. Avalons Composer/ComponentManager abstraction is lightweigh and much simpler. (In base case a wrapper around hashtable) * It formalizes the concept of nested or cascading exceptions. Ie one exception could be caused by another exception, which was caused by another exception etc. This stores all exceptions in exception objects. * It formalizes concept of activity interfaces (ie Initializable/Disposable, Startable/Stoppable, Suspendable/Resumable). * It formalizes the pattern of using objects for enums rather than using unsafe ints. * It formalizes component marker interfaces for single threaded or reentrent components * It formalizes a method through which components aquire a logger * It formalizes a method through which components aquire "parameters" (different from configuration which is hierarchial - this is flat). * It formalizes a method of versioning classes/interfaces/packages (same one as will be adopted by commons project and hopefully cjan) The above is just the "framework" part. The component repository (excalibur) also has things that will be useful in ant (such as CLI parameter parsing, IO utils and filters etc). However by far the best feature IMHO is that it enforces Inversion Of Control (IOC). IOC (aka "The Hollywood Principle - don't call us, we'll call you") is a very very useful design meta-pattern when building component based systems. By encouraging decoupling and allowing the components to provided by container it is much much easier to evolve the underlying container without breaking hosted components etc. Even now it is probably not clear what Avalon "offers" as none of the code does "anything" ;) The advantage is that Avalon enforces established design contracts. This of course means that fewer mistakes will be made when developing an2 and hopefully a quicker turn around of high quality code ;) Cheers, Pete *-----------------------------------------------------* | "Faced with the choice between changing one's mind, | | and proving that there is no need to do so - almost | | everyone gets busy on the proof." | | - John Kenneth Galbraith | *-----------------------------------------------------*
