1. A method comprising: identifying whether a method call made by a first object and directed to a second object is a local method call or a remote method call; responsive to an identification that the method call is the local method call: binding the first object directly to the second object; and making the method call directly to the second object; and responsive to an identification that the method call is the remote method call: detecting whether a stub capable of handling the remote method call exists; responsive to an identification that the stub exists, using the stub to handle the remote method call; responsive to an identification that the stub does not exist: generating a dynamic proxy; and using a remote invocation handler of the dynamic proxy to manage the remote method call, the using of the remote invocation handler comprising: receiving the remote method call at the dynamic proxy; finding a reference object that corresponds to the remote method call; and wrapping a remote method in an invocation handler object; detecting whether a skeleton capable of handling the remote method call exists; responsive to a detection that the skeleton exists, using a parameter of the remote method to make the remote method call via the skeleton; and responsive to a detection that the skeleton does not exist, generating a dynamic skeleton, and using a parameter of the remote method to make the remote method call via the dynamic skeleton.