The emergence of pervasive wide-area distributed computing environments, such as pervasive information systems and computational Grids, has enabled new generations of applications that are based on seamless access, aggregation and interaction. However, the inherent complexity, heterogeneity and dynamism of these systems require a change in how the applications are developed and managed. In this paper we present a component-based programming framework to support the development of autonomic self-managed applications. The framework enables the development of autonomic components and the formulation of autonomic applications as the dynamic composition and management of autonomic components. The operation of the proposed framework is illustrated using a forest fire application.