Client Runtime is responsible for rendering the user interface of applications for a specific target device. These applications are built using the Platform Developer Toolkit and stored in the application repository. The client runtime abstracts the user interface so that the application only needs to instruct what information needs to be displayed or captured and what the navigation hierarchy is. The client runtime is responsible for how the interface is rendered and how the hierarchy is navigated. Instructing the ‘what’ instead of the ‘how’ gives the client runtime an enormous amount of freedom in optimising the implementation for the target device.
For instance, the client runtime may decide to change a scrolling form to a paging form because of memory constraints. What’s important is that the correct information is captured in the most user-friendly way, not how the data is captured. The application declares what it needs and gets out of the way for the client runtime to execute.
The only coupling between the client runtime and the platform core is the start URI and the ComUnity application protocol. This application protocol is relatively simple and consists mostly of HTTP idioms and media-types. This de-coupling of the client runtime, the platform core and applications allows independent evolution of client runtime, server infrastructure and user experience technologies. It allows 3rd parties to implement their own competing client runtimes or use ComUnity client runtimes and implement the server infrastructure.