1. A method for creating a proxy object capable of communication with an external entity, comprising: specifying a proxy object definition for the proxy object wherein the proxy object definition defines a first function for communicating with the external entity; specifying at least one implementation class for the proxy object definition, wherein the at least one implementation class does not implement the first function; and wherein the at least one implementation class includes functionality to support one of: proxy object design, software compilation or software execution; wherein the proxy object comprises function interfaces and callback interfaces declared by proxy object definitions, and a proxy object implementation that includes built-in functions for initiating interaction with the external entity, built-in callbacks for handling asynchronous events from the external entity, and an invoke function for handling invocations to function interfaces that do not have a corresponding built-in function; wherein an invocation of the first function on the external entity comprises an invocation of the invoke function of the proxy object implementation; and registering the proxy object with an asynchronous event router, wherein the asynchronous event router receives and routes the asynchronous events to an appropriate proxy object.