Beginners Guide
Here's illustration of some basic things of Mupe. You can see mobile device connecting to server, in this case with Room.java class. This room has its UI described in ui.xml, which includes two other xml files into itself: content.xml and menu.xml. Room.java accesses the xml files via method getDynamicXML.
In ui.xml, you can also see a very common parameter inclusion, !#param0#!. These parameters are given at Java code as arguments to getDynamicXML method. These values can be inserted into the xml files and are the recommended way of inserting dynamic data into xml files. The other way is embedded Java method call, shown in content.xml. This will call the method xmlGetStuff from Room.java and the String return value will be inserted into xml in place of the call. Similarly, in menu.xml, you can see embedded reference !#this#!, which will be replaced with the id number of the Room object, e.g. 42. So, from xml there are three ways to access data in Java: parameters, method calls and the special !#this#! reference.
When the UI is prepared (after all the !#...#! markings are replaced), the UI will be sent to the mobile device. There things are done based on user's action, and in our example, there's likely a menu command of some sort that results in a call to be made back to server. Method to be called is in this case clientDoStuff, and the object whose method is called is the object number 42, which we got earlier from the !#this#! reference.
On a typical Mupe application, there are lot more classes, objects and xml files, but the principle is the same: java objects use xml files to generate UI or part of UI, send it to mobile client, which eventually will call another java method and receive another piece of xml as return (although in some cases the mobile client only sends data to server without expecting any data to be returned).