Hi,

I am new to Avalon and only just started programming in Java. I find,
however, Avalon to be aesthetically appealing, yet still struggle to get a
firm grip on some of the concepts promoted by the framework. What follows is
my preliminary, somewhat sketchy picture of it. I would appreciate any
corrections or improvements.

1. Central is the concept of a component. This one is quite clear. It is a
highly reusable programmatic entity with a well-defined lifecycle and a work
interface, performing a non-trivial task. All dependencies that must be
resolved for a component to be able to fulfill its duty must be satisfied
via its lifecycle interfaces.

2. The concept of a component is dependent upon that of a container. A
component's container is that piece of code that creates the component and
possibly promotes its availability to other components. It is NOT, however,
(my first thought) another component using said component after being
composed.
Neither Avalon nor ECM seem to have a programmatic means of clearly defining
what a container is. To them, it's just a concept. This situation is
different with Fortress and Merlin2.

3. A central aspect of any application modelled after the concepts promoted
by Avalon is that it constitutes - either implicitly or explicitly - a
unidirected (from parent to child) circle-free graph, in short a tree, of
dependent components, child components being dependent on parent components,
but not vice versa (IOC). While this is conceptually true, it need not be on
the implementation level, since threadsafe components might be shared by
multiple parent components. This is, however, hidden from the components'
view.

4. While the knowledge of this component tree is only implicit in ECM and -
to a certain degree - in Fortress (any application must have an at least
implicit knowledge of its structure to function correctly), Merlin2
explicitly defines a meta model for it, thus enabling a user to dynamically
access and manipulate it.

These observations, if true, will probably appear trivial to most of you,
but I wanted to get the basics straight before moving on. I just started
porting a small app I once wrote to Avalon, wondering, which container
framework to use. Since it need not be of production quality - it's just for
the fun of it - I currently tend towards Fortress, though I started out
using ECM. Yet I am getting tired of all those deprecation warnings, and
Fortress seems quite easy to understand, whereas Merlin2 is a different
beast altogether (and probably overkill for my purposes). Any different
views?

Some minor remarks regarding the documentation:

1. In "Avalon Framework - Guide - COP in Avalon" - "The Component Manager" :
Towards the end, it reads "Sometimes you need to create a new interface name
that does nothing more than allow access to alternate roles who have the
same role." Shouldn't it end with "... who perform the same function" or "
...who are functionally equivalent."?

2. In "Developing With Apache Avalon" - "Implementing The Dream" -
"Initialization and Disposal Approach" : I struggled a bit with the
paragraph "The main disadvantage of this approach comes into play...", at
times confusing "this object", "component", thinking hard about "... the
component whose reference it has". I Think I got it right, and making the
reader think hard could be considered a virtue in itself ;)

Otherwise, it is undoubtedly one of the best pieces of
documentation/introduction I have ever read! Keep up the good work.

Olaf


--
To unsubscribe, e-mail:   <mailto:avalon-users-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:avalon-users-help@;jakarta.apache.org>

Reply via email to