The near future envisions a pervasive heterogeneous computing infrastructure that makes it possible for mobile users to run software services on a variety of (resource-constrained) devices. To ensure that users meet their non-functional requirements by experiencing the best quality of service according to their needs and the resource characteristics of the specific contexts of use, services need to be context-aware and adaptable. This book presents an approach to context-aware adaptable services based on a modified service oriented interaction pattern to discover and access adaptable services and on a service level specification model to take care of the non functional dimensions. Services are implemented as adaptable components and are deployed on heterogeneous resource constrained mobile devices using an integrated framework that supplies a complete support for developing, reasoning and adapting Java programs with respect to heterogeneous execution environments. This book proposes to the software engineering research community several contributions to address the big challenges resulting from the development and the execution of context-aware adaptable services.