The XMILE project organized by the Software Systems Engineering Group (University College London) is developing XML-based middleware for fine grained code mobility. XMILE (XML in Mobile Incremental Logical Environment) is a language that "exploits the tree structure of XML documents and then uses XML related technologies such as XML Schema, XPath, and the Document Object Model (DOM) to modify programs and even their programming languages dynamically. The availability of these XML technologies considerably simplifies the construction of application-specific languages and their interpreters. XML is used in XMILE to achieve more fine-grained mobility than in the approaches based on Java; the unit of mobility can be decomposed from an agent or class level, if necessary, to individual statements. XMILE supports incremental insertion or substitution of, possibly small, code fragments and open new application areas for code mobility such as management of applications on mobile thin clients, for example wireless connected personal digital assistants (PDAs) and mobile phones, and active networking."
From the article in Automated Software Engineering:
Code mobility approaches introduce flexibility to the general programming paradigms, allowing code to be dynamically distributed across different hosts of a network. Mobile code can be proactively shipped using push-technologies or be fetched on demand, for example using Java's class loading mechanism. Mobile agents permit the migration of autonomous programs from host to host, opening new possible communication strategies. In terms of physical mobility, communication and synchronisation of mobile information devices, such as personal digital assistants, palmtops, mobile phones and wearable computers, introduce new needs in terms of middleware and context awareness.
"One of the novelties of XMILE is the ability to change code while the code is being executed. This can be done by exploiting the tree structure of the programs and the DOM API. Specific elements are specified in xmile to define blocks in the XML programs. The blocks are of monitors which synchronize concurrent access by the interpreter and the updater to guarantee consistency. As the blocks need to be defined by the programmer, the programmer is also able to define more effcient and less effcient programs (in the updating perspective) as with larger blocks are updates of elements contained in that block can only happen less frequently. As we said, for every application, a domain specific language must be defined in XML. For every new tag a corresponding Java class needs to be implemented. XMILE comes with a set of common already defined tags. In our experience, only a small number of new tags need to be defined from scratch for every application. The definition of the Java classes for these tags is usually quite easy. XPL is an XML based extensible programming language. The aim of it is to be able to allow programming, mainly scripting, through a set of XML tags. XMILE follows the same line, however the motivations of XPL are still very vague. XMILE aims at a fine-grain way to update remote programs, possibly defined with a specific extensible grammar linked to a domain, versus the XPL vision of a generally defined grammar with which to program..."
XMILE Language: "The XMILE program is written using XML and some tags are defined in order to support the basics functionality, such as variables declaration. The set of the tags constitutes the XMILE Language and the programmer can introduce or change them according to his/her requirement. Initially, we give an overview about the basic tags implemented in XMILE and after we explain how you can modify a program evenif it is running... The XMILE Language is composed of a set of tags that the programmer can use in order to develop his application. This set is divided into two big subsets: the intrinsic tags and the command tags. The first contains the basic functionality of the language; they do not implement instructions, but define only thing, such as variables; the second subset contains tags that implement particular functions, such as printing variables, manipulating values and so on. This subset can be extended in order to increase the power of the language. The tags are written using Java-like notation for readability purposes - that is, all the words are written in lower case except the first character that can be uppercase or lowercase; the first character of a word is uppercase when the word is not at the beginning of the tag or when the tag is an element of command tag set; otherwise, it is lowercase; all the intrinsic tags begin with a lower case... A program can modify another program accessing its code and it can change the code at the wanted granularity. This can be done in two different ways: asynchronous or synchronous. When an update is asynchronous, its effects are visible only starting from the following execution. Asynchronous update does not affect the interpreters that are running at the moment..."
Architecture: "XMILE is made of two components: the XMILE Engine and the XMILE Interpreter. On each device there is an XMILE Engine that can manage one or more XMILE Interpreter. The aim of the XMILE Engine is to coordinate and manage the XMILE Interpeters -that is, create them, share the resource among them and the like. The XMILE Interpreter executes the XMILE Program and manages its variable. Different XMILE Engines that are running on different host can communicate between them in order to exchange data - that is, messages, code and the like. All of this is managed inside the XMILE Engine that offers some primitives to the XMILE Interpreter in order to access these kind of service..."
Principal references:
- XMILE project website
- "XMILE: An XML Based Approach for Incremental Code Mobility and Update." By Cecilia Mascolo, Luca Zanolin, and Wolfgang Emmerich (Department of Computer Science, University College London, London, UK). In Automated Software Engineering April 2002, Volume 9, Number 2 (April 2002), pages 151-165 (with 27 references).
- Earlier paper: "XMILE: An Incremental Code Mobility System based on XML Technologies." By Cecilia Mascolo, Wolfgang Emmerich, and Anthony Finkelstein (Dept. of Computer Science, University College London). 2nd International Symposium on Agent Systems and Applications and Mobile Agents (ASA/MA2000), September 2000.
- Download binaries
- Contact: xmile@cs.ucl.ac.uk