Why rewrite RMI? What are the original RMI problems?
When you make a remote method call through RMI nothing can guarantees the way or how RMI will transport it at the communication layer. And when you lose control over this, maybe your application cannot work correctly in all enviroments you would like. The optimized scenario when the application user is connecting through the Internet is: the communication latency must be minimal; and user must be able to connect without changing anything in it’s network’s topology to use the application. With Java RMI we lose in both points: the communication comes with high cost (using so much bandwidth – and sometimes causing an unwanted latency) and requires the user has a valid Internet IP with some ports opened and free to others connect to (and maybe our user would need to make some changes in it’s network’s topology for guarantees this). Of these two problems, high bandwidth usage isn’t the worst, but can be optimized. The major problem comes when user needs to reconfigure it’s network to use yo