Next generation embedded systems will be composed of large numbers of heterogeneous devices, including extremely resource-constrained devices such as sensor motes. These devices will use different operating systems and be connected through different network interfaces. They will also need to be adaptive to changing conditions based on context-awareness. And, as well as being connected to the fixed Internet, they may be mobile and form ad-hoc networks with their peers. Our focus in this paper is on the provision of a framework to support the development and execution of next generation embedded systems. In traditional, fixed, networked environments this is typically the role of a middleware platform such as CORBA, EJB or Web Services. However, these platforms incur unacceptably high overhead in terms of performance and memory footprint, and also have limited support for customisability and adaptivity. The approach presented in this paper leverages a small component runtime to support highly modularised and customisable middleware services that can be tailored for specific embedded environments. The approach decouples and encapsulates the functionality provided by its various constituents (components) behind well-defined interfaces. This decoupling not only enables one to deploy different variants of the same component (e.g., tailored to a specific device type), but also enables the dynamic reconfiguration of component instances and their interconnections, which in turn provides support for adaptivity.