Today's software systems increasingly depend on adaptation capabilities. As a consequence the system has to adapt to the environment and constantly change. A key
challenge is therefore, if and how program languages can support those requirements.
For this purpose two languages are taken under consideration. First a main stream
language called Java. And second a language called Erlang, which has been designed to
support distributed, fault-tolerant applications. In this thesis, the following two questions are investigated and how sucient each one of the language is. First a system
should always be available and therefore it should evolve during runtime. This means
that it is essential that the system has the ability to allow updates during runtime.
And second, the application must have capabilities to adapt itself. Human intervention
is too slow for adaption and therefore the system has to be designed to support those
For Java tools are presented to give it the ability to adapt during runtime. However the
examined tools cannot successfully overcome this restriction. Erlang has been designed
to provide this ability and therefore has the advantage. The second goal to adapt, is for
both languages a challenge. Therefore frameworks/extension like context oriented programming (COP) and aspect oriented programming (AOP) are investigated. However
both of them cannot be easily implemented without changing the design of a system.
In conclusion a language should already provide those requirements and do not rely on
workarounds or tools because they bring their own challenge.