SUMMARYIn this paper, we present the JAC (Java Aspect Components) framework for building aspect-oriented distributed applications in Java. This paper describes the aspect-oriented programming model and the architectural details of the framework implementation. The framework enables extension of application semantics for handling well-separated concerns. This is achieved with a software entity called an aspect component (AC). ACs provide distributed pointcuts, dynamic wrappers and metamodel annotations. Distributed pointcuts are a key feature of our framework. They enable the definition of crosscutting structures that do not need to be located on a single host. ACs are dynamic. They can be added, removed, and controlled at runtime. This enables our framework for use in highly dynamic environments where adaptable software is needed.