I'm new to Avalon, and I really like it. I've got some experience with Turbine services from Jetspeed and we use the ideas of services in our project (chefproject.org). I'm looking for our next generation service methodology.
Then I ran across Pico Container, and read the stuff on their web site. I think I grok the essential difference between Avalon Framework and Pico Container - they like to have all the dependent components delivered to a component in the constructor, while in Avalon you ask for other components when you need them.
what you nail down right here is the essential way in which avalon and pico differ in the way they provide a component with its dependencies.
With PicoContainer, that's where it ends. It doesn't do anything else. You can add lots of features to it (examples exist in the nanocontainer project), but by itself it doesn't do anything. It won't even run from the commandline.
I'm not sure what to make of this difference. Pico is much simpler (?). But what am I loosing for that simplicity?
"Avalon" simply does more. It handles stuff like configuration using xml files, management of loggers, an appropriate and elaborate lifecycle for your component (set it up with logging, other context, etc etc, then initialize it and create threads, stop it before disposing it and killing it off). Etc etc.
Also, depending on what avalon container you pick, you get a truckload of other features on your plate. Take, for example, our new and hot container named "merlin". It runs as daemon or nt service if you want, it can autodownload dependencies from maven repositories, has intelligent configuration override mechanisms, does autoassembly, can pool or multithread your components as desired, etc etc etc.
So what you get is a few extra design patterns encoded in your framework (seperation of concerns, for example) and various features, and what you loose is simplicity. PicoContainer ends up in a small jar; all avalon downloadables thrown together are more than a few megabytes in size.
You should look at what you need and whether Pico offers it (or part of it and you can easily add it in), or if you need much more features, and then whether avalon provides those, and if so, if you are willing to make some adjustments in your components and application in order to be able to use them.
If, for example, you want to start learning how to work with the IoC pattern and don't care for all the other stuff, Pico will be a better choice. If you need a platform on which to run a database, bets are on avalon.
Of course, the landscape is changing fast. In a few months, there might very well be a pico-based database, a pico-based avalon container, and more.
hope this helps!
- Leo
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
