Many distributed applications have to meet their performance or quality-of-
service goals in environments where available resources change constantly.
Important classes of distributed applications (including distributed multim
edia codes, applications for mobile devices, and computational grid codes)
use runtime adaptation in order to achieve their goals. The adaptation beha
vior in these applications is usually programmed in ad hoc code that is dir
ectly incorporated into the base application, resulting in systems that are
complex to develop, maintain, modify, and debug. Furthermore, it is virtua
lly impossible to extract high-level information about adaptive behavior us
ing program analysis, even if there were compiler and runtime systems that
could exploit such information. The goal of our research is to develop comp
iler and programming language support to simplify the development and impro
ve the performance of adaptive distributed applications. We describe a samp
le set of language extensions for adaptive distributed applications, and di
scuss potential compiler techniques to support such applications. We also p
ropose a task-graph-based framework that can be used to formalize the descr
iption of a wide range of adaptation operations.