1. A method comprising: receiving an application at a first execution environment, wherein the first execution environment comprises a web browser, and wherein the application receives services by exchanging messages for the services with an execution environment; starting execution of the application using the first execution environment, wherein, while the application is executing using the first execution environment, the application connects to the web browser and receives a first set of services by using a first message passing service implementation to exchange a first set of messages with the web browser, wherein the first set of services comprises one or more of the services, and wherein the first set of messages comprises messages for the first set of services; receiving an execution environment change notification from a user of the application, wherein the execution environment change notification corresponds to a request to transition the application to a second execution environment; when the second execution environment is a compatible execution environment, transitioning the application from the first execution environment to the second execution environment without interrupting the execution of the application, wherein transitioning the application to the second execution environment involves dynamically replacing, during the execution of the application, the first message passing service implementation with a second message passing service implementation; and when the second execution environment is an incompatible execution environment, continuing the execution of the application by using the first message passing service implementation, wherein dynamically replacing the first message passing service implementation comprises disconnecting the application from the web browser, and wherein, while executing using the second execution environment, the application receives a second set of services by using the second message passing service implementation to exchange a second set of messages for the second set of services with the second execution environment, wherein the second set of services comprises one or more of the services, wherein the second message passing service implementation allows the application to run independently of the web browser, wherein allowing the application to run independently of the web browser comprises, while the application is executing using the second execution environment, ignoring a third set of messages from the web browser to the application so that the application is not affected by the third set of messages, wherein messages in the third set of messages correspond to commands for one or more of the services.