In the preceding sample programs, we used a server program to instantiate and register objects so that clients could make remote calls on them. However, in some cases, it might be wasteful to instantiate lots of remote objects and have them wait for connections, whether or not client objects use them. The activation mechanism lets you delay the object construction so that a remote object is only constructed when at least one client invokes a remote method on it.
To take advantage of activation, the client code is completely unchanged. The client simply requests a remote reference and makes calls through it.
However, the server program is replaced by an activation program that constructs activation descriptors