Introduction to DRMI
In Java RMI, the runtime type of an object determines the passing semantics used for a remote method. Thus, an object can only be passed to a remote method in one manner. However, this limits programmer flexibility and may create future software maintenance issues. A declarative approach alleviates these problems by allowing the server programmer to declare how a remote method's parameters should be passed. Even more interestingly, Declarative RMI can be implemented on top of standard Java RMI by using annotations, code generation, and bytecode retrofitting.