APlay allows to move client logic to a server without adding complexity in code - this makes distributed development as easy as local development. The model in APlay Studio is used as a blueprint to generate application domain specific objects in selected target languages. The generation approach cuts down implementation time and in conjuction with APlay's persistence module allows distributed access to a database.

APlay introduces a new paradigma to programming: It is already common to virtualize over hardware and servers, APlay adds a further virtualization layer to hide the location of an object's implementation. Consider a player object in a multi-player game. The server could have full control over the player, whereas the client might only be allowed to move. He might as well have read-only access to it's health. Since these properties are already designed in the APlay model, the code generator doesn't even create a setter for health on the client. Also, APlay saves bandwidth by not transferring fields that are not relevant for the receiver. To achieve the best possible performance, generated code is compiled if the language supports compilation.

Let's consider a local application that should be converted to a distributed application with a shared database and communication between clients. To accomplish this with APlay, a data model is designed that consists of all the dynamic objects that should be distributed. APlay generated interconnected objects for all target languages and a database schema if persistence is enabled. To be able to edit data on the client, the server needs to provide a "load" method only: The client requests a data entry, a server instance loads from the database and returns it to the client. The client now possesses an active APlay object: Changes to any field are saved to the database and at the same time distributed to all other clients that are watching the same entry.
Of course, many applications don't need or want these fine grained synchronization and can easily get this behavior by grouping fields or setting the fields only when the change should be propagated.

By the way, if no additional server logic is needed, implementation-free APlay Zero Server can be used.