Avalon Project - Overview

What is it?

The Avalon project is an effort to create, design, develop and maintain a common framework and set of components for applications written using the Java language.

Having said that, what Avalon 'is', is a framework that allows components of varying scale to be created, managed via a specific set of lifecycle methods, and used in an application. While Avalon is geared towards server-side applications, it is not limited to such, and is quite flexible.

The scope of usage for Avalon is quite broad. You may only want to create custom, application specific components that can be managed in a well defined manner, or you may want to use the many components and services available with the Excalibur sub-project, or use complete applications, such as FTP or a web server, in a server oriented container such as Phoenix. What this means to you is that you can use only what you need to use, and you can scale your usage of Avalon as your application needs grow.

Project Goals

As many people point out, software engineering is a very uncommon procedure in software development and even more uncommon in auto-organized open source projects. The main goal of this project is to design a way for different projects to share resources avoiding as much as possible efforts duplication.

The Avalon Team are proud to announce a new whitepaper that covers how to develop with Avalon. It covers the Framework, and touches on the LogKit and Excalibur. You can find Developing with Apache Avalon on this site.

Sub-Projects

There are several distinct sub-projects that together form the Avalon project:

Framework

Framework provides a specification of design patterns and rules in the form of interfaces. Also provided are default implementations of those interfaces.

The framework is not a product or an API set or a set of interfaces: it is a collection of code design patterns, rules, guidelines and suggestions on how to write software that "plugs" into the framework. The framework does not impose restrictions on the application that uses it, but rather precious guidelines to help the developers reuse as much work they can from other solutions.

Excalibur

Excalibur is a collection of implementations and common code based on and implementing the Avalon Framework.

Phoenix

Phoenix is a server oriented Application Server. Applications and Services that conform to the framework rules can be hosted in Phoenix. The Application server manages the applications classloader, security and logging needs. It also provides a JMX-based management facility.

Cornerstone

Cornerstone is a repository. for what we call blocks, which provide services vital to server applications. The blocks include blocks for services such as scheduling and socket management.

Applications

Applications is a repository of Phoenix blocks. Some are simple self-contained demos of Phoenix applications, others are complete standalone products, and a few are ambitious works in progress. If you are looking for a starting point for a Phoenix block or a complete server, then these applications could be good inspiration.

LogKit

LogKit is the preferred logging toolkit used by the Avalon subprojects.

It is quite possible to use the other avalon subprojects without committing to logkit. We support log4j and JDK 1.4 logging as well.

Supporting Technologies

Krysalis Logo Cocoon Logo Ant Logo

by Federico Barbieri, Berin Loritsch, Leo Simons, Peter Donald, Paul Hammant, Nicola Ken Barozzi