1. A method performed by a provisioning source that provisions at least one mobile software application to a mobile computing device, the method comprising: receiving, by a provisioning source, from a mobile computing device, via at least one network interface configured for communicating with the mobile computing device, a request to download at least one mobile software application from the provisioning source to the mobile computing device, wherein the provisioning source comprises at least one computer processor, non-transitory computer readable memory operatively connected to the at least one computer processor, and configured to store executable computer code and the at least one mobile software application, and wherein the at least one mobile software application comprises executable computer code, at least one structured document, and wherein the mobile computing device comprises at least one computer processor configured to execute computer code, non-transitory computer readable memory operatively connected to the at least one computer processor and configured to store the at least one mobile software application, and at least one network interface configured to communicate with the provisioning source; and sending, by the provisioning source, via the at least one network interface configured for communicating with the mobile computing device, the requested at least one mobile software application to the mobile computing device, wherein when stored on the non-transitory computer readable memory of the mobile computing device and when executed by the at least one computer processor of the mobile computing device, the downloaded mobile software application will perform a method for using the mobile software application on the mobile computing device, the method to be performed comprising: executing, by the mobile computing device, the mobile software application received from the provisioning source, the mobile software application including programming code and the at least one structured document that together describe at least a portion of functionality provided by the mobile software application; 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 mobile software application consistent with the portion of functionality provided by the mobile software application 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 mobile software application, a user input event 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 mobile software application based on a response, by the mobile software application, to the received input event; and updating, by the abstraction layer, the device-independent application user interface, responsive to the reconfiguring of the DOM structure.