Dirmi is replacement for Java RMI which supports bidirectional remote objects and many more features, including:
Asynchronous methods
Remote call timeouts
Customizable remote exceptions
Callbacks
Streams
Completion queues
Batched methods
Disposable objects
Closeable sessions
Thread pool constraints
Custom class loaders
Dirmi is designed for high performance, and it exceeds the performance of Java RMI. Unlike RMI, Dirmi does not have any firewall restrictions. Only one port needs to be opened for accepting sockets, and both client and server can export remote objects through it.