The emergence of global network connectivity has motivated the investigation of models and techniques for dynamic self adaptive
distributed software for two reasons: to enable adjustment of deployed components to previously unknown and possibly dynamically
changing hosting environments, and to adapt the inter-component distributed architecture in order to improve application scalability,
performance and availability. Several issues impact the quality of self-adaptation, including the degree of adaptation, programming
transparency, performance, and monitoring facilities. We discuss these issues and describe two approaches to self adaptation,
one focusing on intra-component adaptation and the other on inter-component adaptation. Both approaches were fully implemented
in the Hadas and FarGo projects, respectively.
Keywords Dynamic adaptability - Self adaptive components - Engineering Distributed Systems - Java - Reflection - Mobile Objects