![]() |
Summary and discussion
Session 2:
Danny Lange Slides: PowerPoint (58K) |
Danny Lange considered the language question, i.e., what language or what kind of language is best for mobile agents? Since the General Magic mobile-agent system, Odyssey, is implemented in Java, Danny used Java as an example.
Java has several characteristics that make it an attractive mobile-agent language. It is platform independent; it is designed from the ground-up to securely execute untrusted code; and it allows Java classes to be dynamically loaded at run time (and its builtin "class loader" can be replaced with an application-specific class loader that implements a different loading policy). In addition, Java is multi-threaded, already includes facilities for capturing the state of an object, and included reflection capabilities so that a Java program (e.g., a Java agent) can discover information about itself.
However, Java has several drawbacks. There is inadequate resource control (e.g., there is no limit on consumed CPU time); there is no fine-grained access control for objects or their methods (e.g., if one agent gives another agent a reference to one of its objects, the second agent can call all the public methods of the object); there is limited support for versioning; and there is no support for capturing the execution state, which makes certain migration models impossible.
Due to these limitations, Odyssey required several "architectural band-aids" such as approximated security models, proxy objects, and event-based control. For this reason, Danny feels that Java is not the right language for mobile agents, and suggests that we need a higher-level language in which resource monitoring and security policies are integral language components.
Discussion centered around the merits of existing languages and useful features that might be available in some new language. Although it was agreed that existings languages all suffer from one or more serious shortcomings, no further consensus emerged.