A computer program product stored on a non-transitory, computer readable medium and operable for execution by at least one computer processor of a mobile computing device, the computer program product comprising computer readable executable program code and at least one structured document, wherein the computer program instructions are executable by the at least one computer processor of a mobile computing device to perform a method for using a computer program product on the mobile computing device, the method comprising:
- executing, by the mobile computing device, a computer program product received from provisioning source and stored on the non-transitory computer medium of the mobile computing device, the computer program code including at least programming code and at least one structured document that together describe at least a portion of functionality provided by the computer program product;
- populating, by an abstraction layer executing on the mobile computing device, a Document Object Model (“DOM”) structure, the DOM structure at least in part representing the running state of the computer program product consistent with the portion of functionality provided by the computer program product described in the received at least one structured document and the received programming code;
- presenting, by the abstraction layer, a device-independent application user interface responsive to the DOM structure;
- receiving, by the computer program code, a user input from within the rendered device-independent application user interface;
- receiving, by the programming code referenced by the DOM structure, from the abstraction layer, the input event;
- reconfiguring, by the programming code referenced by the DOM structure, in response to the received input event, the DOM structure to update the running state of the computer program product based on a response by the computer program product to the input;
- and
- updating, by the abstraction layer, the device-independent application user interface, responsive to the reconfiguring of the DOM structure.