A class of programming languages that support the development of Mobile Code Systems (MCSs). These are systems that realize code mobility—the movement or migration of a program known as an executing unit (EU), or of its code or text, from one computational environment (CE) to another. A CE is the environment (computer, system, subsystem, or network) in which the actual execution or computation takes place.
MCLs model two types of mobility: weak mobility, which is characterized by the migration of the program’s code only, without reference to any precedent execution state except perhaps some initialization data; and strong mobility, which takes into account the last execution state and permits a program seamlessly to resume its execution at the point at which it had left it. Java applets are an example of weak mobility. An example of an MCL that provides both weak and strong mobility is occam-pi. This also provides an additional form of mobility known as channel mobility, which models the change of connectivity in a network of communicating programs. Traditional MCLs (e.g. Icarus) do not take channel mobility into account at all.
Mobility in this sense is not to be confused with mobile computing, which is concerned with the computation carried in portable devices. Use of MCLs is not widespread and research on the topic is still ongoing.