"RMI replacement suitable especially for applets"
miniRMI
version 0.94.2

Copyright (c) 2002 Petr Toman

  • Basic information

    miniRMI is a free opensource library that serves as a lightweight replacement for the original java.rmi [2] packages, which have the following painful limitations for applets:

    • RMI packages are missing in Microsoft Internet Explorer (MSIE), because of "political" reasons. Microsoft even provides a RMI patch [5], but installation requires administrator privileges on Windows machines and most users are not willing to do such thing.

    • Encryption (like SSL) cannot be used with java.rmi without signing the code, which forces the developer buying a certificate, and requires special coding for Netscape Navigator (NN) - not counting in "Java Plugin" and other browsers specialities.

  • Benefits of using miniRMI

    • miniRMI is easy to use - only cosmetic changes are required to the existing RMI code.

    • No installation on client/browser side necessary - unlike the official patches ([5], [6]), miniRMI works seeminglessly with any browser supporting Java 1.1 (like NN 4.05+ or MSIE 4+) or higher (like Netscape 6.x or Mozilla with Java Plug-in).

    • In contrast to other solutions (Corba, SOAP, XML-RPC etc.), miniRMI is an ultrathin library - miniRMI_client.jar has only 18 kB!

    • SSL encryption can be used without applet signing - internal browser https protocol provider is used (without any proprietary coding). Applications can use JSSE [7] (integrated into JDK 1.4+) or similar library.

    • miniRMI calls can share the same session with servlets - ideal for combining applets and servlets - see miniRMI connector for ActionServlet [8].

    • miniRMI works through firewals and uses the browser's proxy settings automatically.

    • miniRMI can prevent tampering of remote object IDs and therefore can protect the client from pretending to be someone else (no cryptographic libraries are needed on client).

    • miniRMI calls can be intercepted by overriding invokeMethod() method.

    • Custom replacement of objects sent in miniRMI response is possible in replaceObject() method (useful to handle problems with Java versions).

  • Limitations

    • Although miniRMI mimics java.rmi, it is not a full 1:1 implementation.

    • miniRMI sends data over http/https - this is slower than using direct socket connections (not possible for Internet applications, where proxies are used, anyway).

    • Callbacks are not supported because of the HTTP nature - use the polling technique as a workaround (see examples/bbsdemo).
      [this may be solved by implementing HTTP streaming in future versions]

  • Documentation

  • Download

    miniRMI...
    (sources & docs included)
    ...requires also* ...has examples
    configured for
    miniRMI_0.94.2.zip JDK 1.2+
    (client code is compatible
    with JDK 1.1)
    Ant 1.4+ JSDK 2.0,
    Tomcat 3.x/4.0**
    *JBuilder 4+ is also needed if you want to use minirmic in JBuilder
    (installation: copy 'lib\miniRMIC.jar' to JBuilder's 'lib\ext' directory and restart JBuilder)

    **or any servlet container compatible with Servlet specification 2.2/2.3

  • Latest news

  • Related projects

  • References

    [1] RMI Tutorial
    [2] RMI Documentation
    [3] RMI over IIOP
    [4] The Scoop on RMI and SSL
    [5] Microsoft RMI patch
    [6] IBM RMI patch
    [7] Java Secure Socket Extension (JSSE)
    [8] miniRMI Connector for ActionServlet