1. A method performed by at least one computer processing unit, the method comprising: obtaining multiple gadgets for a web application; determining that a first gadget of the multiple gadgets has a dependency on an interface, the interface specifying an exposed method; evaluating other gadgets of the multiple gadgets to determine whether the other gadgets implement the interface on which the first gadget has the dependency, wherein the evaluating provides a determination that a second gadget of the multiple gadgets implements the interface; responsive to the determination that the second gadget implements the interface on which the first gadget has the dependency, binding the first gadget to the second gadget in the web application; and executing the web application by: executing the first gadget in a first execution environment, wherein the first gadget encapsulates first data and first code within the first gadget that are hidden from the second gadget, and executing the second gadget in a second execution environment that is isolated from the first execution environment, wherein the second gadget encapsulates second data and second code within the second gadget that are hidden from the first gadget, wherein the second gadget executes the exposed method of the interface in the second execution environment responsive to a request from the first gadget executing in the first execution environment.
1. A method performed by at least one computer processing unit, the method comprising: obtaining multiple gadgets for a web application; determining that a first gadget of the multiple gadgets has a dependency on an interface, the interface specifying an exposed method; evaluating other gadgets of the multiple gadgets to determine whether the other gadgets implement the interface on which the first gadget has the dependency, wherein the evaluating provides a determination that a second gadget of the multiple gadgets implements the interface; responsive to the determination that the second gadget implements the interface on which the first gadget has the dependency, binding the first gadget to the second gadget in the web application; and executing the web application by: executing the first gadget in a first execution environment, wherein the first gadget encapsulates first data and first code within the first gadget that are hidden from the second gadget, and executing the second gadget in a second execution environment that is isolated from the first execution environment, wherein the second gadget encapsulates second data and second code within the second gadget that are hidden from the first gadget, wherein the second gadget executes the exposed method of the interface in the second execution environment responsive to a request from the first gadget executing in the first execution environment. 2. The method of claim 1 , further comprising: determining that the first gadget has another dependency on another interface that specifies another exposed method, wherein a third gadget implements the another interface; and binding the first gadget to the third gadget in the web application.