1. A method for dynamic placement of applications in a cellular network mobile cloud, the method comprising the steps of: (a) obtaining: (i) a model of the cellular network, (ii) a model of user mobility patterns in the cellular network, and (iii) a model of a profile of the applications; (b) upon receipt of requests from users for the applications, obtaining runtime states at edge servers in the mobile cloud; (c) upon obtaining the runtime states at the edge servers, placing the requests among the edge servers and a core server in the mobile cloud based on the models obtained in step (a) and the runtime states obtained in step (b), wherein the placement of the requests among the edge servers and the core server is optimized using a cost function to compare, for a given one of the requests, a cost of serving the given request at the edge servers and a cost of serving the given request at the core server, the method further comprising the steps of: determining a cost of serving a given one of the requests for an application A at a given one of the edge servers and a cost of serving the given request at the core; determining a remaining connection time for a user of the given request with the given edge server; predicting a response time for the given edge server to service the given request; and entering the given request to a queue at the given edge server if the cost of serving the given request at the given edge server is less than the cost of serving the given request at the core server, and the remaining connection time is greater than the response time predicted, otherwise forwarding the request to another server.