1. A method for delivering an application over a network from a backend server to a plurality of client devices, at least two of the client devices differing in type and display capabilities, the method comprising the steps of: receiving a request from a client and determining a type of the client; having the application invoke a Graphic User Interface (GUI) Application Programming Interface (API) to present the application's user interface; in response to the type of the client, replacing the GUI API with a re-implemented, network aware GUI API comprising a User Interface (UI) record, the UI record comprising pre-determined format based messages that describe the Graphical User Interface, event processing registries, and other related information corresponding to a presentation layer of the application in high level, object level, messages; sending such messages to the client device via the network; processing the messages in the UI record and rendering a user interface by a client-side program operating at the client, which delivers a user experience for that device according to the display capability of the client; rendering the user interface on the client device; transmitting a plurality of necessary user input and a plurality of client-side events back to the server via a predetermined protocol; processing the user input and client-side events on the backend server, translating the events and inputs as if they were locally generated, and sending such translated events and inputs to the application for processing; encoding and routing output of the application to the client device using the predetermined messaging format; and, further processing the output by the client-side program to refresh the Graphical User Interface; wherein use of the re-implemented network aware API enables the application and GUI API to be developed once and deployed multiple times for use by multiple different types of client devices.