LipeRMI is a completely new RMI implementation to replace native Java RMI. It is totally independent from native Java RMI and it uses a Internet optimized approach for communication layer - only one socket per client; unidirecional.
The project's propose is to rewrite Java RMI and solve its original implementation problems.
The major of them, - what makes Sun's RMI so impopular - is it's bad communication architecture for an Internet usage. And this is the initial motivation to start this project.
Also, because LipeRMI uses no imports, you can use LipeRMI even on limited socket-enabled devices.
The development of LipeRMI have some keypoints, it must primarily:
- provide abstract communication between objects residing in different virtual machines;
- provide a clear and extensible API and architecture;
- be very light weight and require no external imports;
- be secure;
- provide a Sun's RMI-like API;
- optimize bandwidth usage;
- optimize the way clients reach server (reusing same socket and keeping it alive);
- shadow the clients in such way they can be behind a local network, router or firewall;
- provide a way to know when connection-oriented events happens;
- provide a way to know, at any time and in any method, which socket made that call (if it's a remote call);
- requires just few adjusts to any RMI-ready application migrate to LipeRMI;
- ... and, be open source and free to anyone to use.
For the next release we are planning:
- Asynchronous calls with @annotations marker to optimize bandwidth usage when method returns really doesn't matter;
- Use of futures
[based on this approach - thanks Luca from guj.com.br];
- Protocol tunneling with HTTP/SSH;
standardization and possibility to custom integrate with legacy systems.