1. A method for providing one or more software applications at a host computer server, the host computer server having, at least, a host memory for storing a host operating system and a host processor configured for operating the host operating system, the method comprising: receiving an application request from a user device, the application request comprising an application identifier associated with a requested software application, the requested software application being a software application to be executed at the host computer server, the user device comprising a device processor and a device memory; providing a resource library for the host computer server, the resource library defining one or more resources required for providing each software application of the one or more software applications; identifying, from the resource library, a set of resources required for providing the requested software application based on the application identifier, the set of resources comprising at least one application resource and at least one host resource, wherein: the at least one application resource comprises one or more resources required for an application operating system to support the requested software application and its absent from the host operating system; the at least one host resource comprises one or more resources required for the application operating system to support the requested software application and is provided by the host operating system, and the application operating system is an operating system operable for providing the requested software application and the application operating system is different from the host operating system; and providing the requested software application with the identified set of resources, wherein providing the requested software application comprises accessing the at least one application resource.