Mobile Maude is a Mobile Agent language extending the rewriting logic language Maude and supporting mobile computation. Mobile Maude uses reflection to obtain a simple and general declarative mobile language design and makes possible strong assurances of mobile agent behavior. The two key notions are processes and mobile objects. Processes are located computational environments where mobile objects can reside. Mobile objects have their own code, can move between different processes in different locations, and can communicate asynchronously with each other by means of messages. Mobile Maude's key novel characteristics include: (1) reflection as a way of endowing mobile objects with ``higher-order'' capabilities; (2) object-orientation and asynchronous message passing; (3) a high-performance implementation of the underlying Maude basis; (4) a simple semantics without loss in the expressive power of application code; and (5) security mechanisms supporting authentication, secure message passing, and secure object mobility. Mobile Maude has been specified and prototyped in Maude. Here we present the Mobile Maude language for the first time, and illustrate its use in applications by means of Milner's cell-phone example. We also discuss security and implementation issues.
(BibTeX entry) (gzip'ed Postscript)