ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <dona...@apache.org>
Subject RE: [Vote] Avalon-Framework integration
Date Tue, 08 May 2001 23:00:35 GMT
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               |
*-----------------------------------------------------*


Mime
View raw message